下面是我们遇到问题的示例代码
namespace name1
{
extern name1::test* _test;
}
namespace name2
{
class toolbox
{
int fun()
{
return _test->test();
}
}
}
using namespace name1;
using namespace name2;
int newclass::new()
{
return _test->test();
}
在上面我会得到错误:
未定义对name2 :: _ test
如果我在name2中添加extern,则会出现错误:
_test不明确
答案 0 :(得分:0)
您遇到的问题是正在使用的命名空间之间的符号冲突。
这是样式指南中禁止using namespace
使用的典型示例。
您可以在标识符前面加上NS::
,而不是包括整个名称空间,例如:name1::_test
。
或者,可以使用using NS::Identifier
从名称空间中有选择地使用元素。但是,我从来没有发现自己需要在全球范围内工作的情况,所以不知道这样做是否可行。
一条建议:不要使用全局变量,将指针或引用作为函数的参数传递是更容易维护的。