我试图使用较短的语法,并避免在各处使用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没有引用类型名称。

10-02 06:40
查看更多