c++ - 当我使用 "' 时,为什么会出现错误 'std' cout' in namespace "using cout = std::cout;"does not name a type"

标签 c++ c++11 using type-alias

我尝试使用更短的语法并避免在任何地方使用 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 是一个对象。我读过一些类似的问题,但仍然不知道会发生什么。

最佳答案

using cout = std::cout; 指的是type alias declaration句法。它类似于typedef;所以您试图声明一个名为 cout 的类型,该类型引用先前定义的类型 std::cout。但是std::cout不是类型名称,它是类型为 std::ostream 的对象.

正如错误消息所说,它只是想告诉您 std::cout 没有引用类型名称。

关于c++ - 当我使用 "' 时,为什么会出现错误 'std' cout' in namespace "using cout = std::cout;"does not name a type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50983485/

相关文章:

c++ - 如何监控 FIFO 的读取和写入?

c++ - toString 函数或 (std::string) 在 C++ 中强制转换重载

c++ - 不带参数的可变参数模板的别名

当并非所有代码路径都返回时,C# 编译器不会提示

c++ - 为什么我的 CFRunLoopTimer 没有触发?

c++ - 在Qt中搜索文件扩展名为zimage的文件

c++ - 从函数插入 vector

c++ - 私有(private)构造函数禁止使用 emplace[_back]() 以避免 move

c++ - set vs unordered_set 最快迭代

c# - 使用声明和表格