我偶然发现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 中就可以了。