代码之家  ›  专栏  ›  技术社区  ›  Staszek

当我使用“using cout=std::cout;”时,为什么在命名空间“std”中得到错误“cout”不命名类型?

  •  3
  • Staszek  · 技术社区  · 8 年前

    我试图使用较短的语法,避免使用 std:: 到处都是,所以我开始使用新别名语法。在一些例子中,我看到人们这样使用它:

    using json = nlohmann::json;
    

    试过这个 STD:: ,但代码如下:

    #include <iostream>
    
    using cout = std::cout;
    
    int main()
    {
        cout << "Sometext";
        return 0;
    }
    

    但我错了 'cout' in namespace 'std' does not name a type . 我知道我可以用

    using std::cout;
    

    但是为什么 using cout = std::cout; 不起作用?

    编辑:

    所有投票结束这个问题:我张贴了它,因为我无法找到一个解决方案,通过写错误信息。是的,作为一个有解决方法的问题,这个问题描述了发生了什么,但是当有人遇到这种错误时,他不会很容易找到解决方法。我只是不知道 cout 是一个物体。我读过一些这样的问题,但仍然不知道会发生什么。

    1 回复  |  直到 8 年前
        1
  •  16
  •   songyuanyao    8 年前

    using cout = std::cout; type alias declaration 语法。类似于 typedef 因此,您试图声明一个名为 cout 指以前定义的类型 std::cout . 但是 std::cout 不是类型名,而是类型为 std::ostream .

    正如错误信息所说,它只是想告诉你 STD:: 不引用类型名。