我偶然发现using namespace指令对我来说是不寻常的用法:

给定一个头文件WeirdNamespace.h:

namespace WeirdNamespace
{

class WeirdClass
{
public:
    int x;

    void go();
};

}

我有一个匹配的'WeirdNamespace.cpp`:
#include "WeirdNamespace.h"

#include <iostream>

using namespace WeirdNamespace;

void WeirdClass::go()
{
    std::cout << "Reached go?!" << std::endl;
}

该类的用法如下:
#include "WeirdNamespace.h"

int main(int argc, const char * argv[])
{
    WeirdNamespace::WeirdClass c;
    c.go();
}

到现在为止,我还从未见过用于避免重新打开cpp文件中的 namespace 或使用 namespace 名称作为方法名称前缀的using指令。指令的正确用法吗?除常见的using namespace警告外,是否存在针对此场景的陷阱?

最佳答案

您可以这样做:

namespace WN = WeirdNamespace;
WN::WeirdClass c;

现在,我有了问题!上面没有答案

引用自[7.3.4] using指令



因此,您在源中定义而不将其包含在 namespace 中就可以了。

10-08 11:30