当我使用“使用cout = std :: cout;”时,为什么会出现错误“名称空间'std'中的'cout'没有命名类型”?

时间:2018-06-22 08:09:00

标签: 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是一个对象。我已经读过类似的问题,但仍然不知道会发生什么。

1 个答案:

答案 0 :(得分:16)

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

如错误消息所述,它只是在试图告诉您std::cout没有引用类型名称。