下面是我遇到问题的示例代码
文件1.h
namespace name1
{
extern name1::test* _test;
}
文件2.h
namespace name2
{
class toolbox
{
int fun()
{
return _test->test();
}
}
}
新文件.cpp
using namespace name1;
using namespace name2;
int newclass::new()
{
return _test->test();
}
以上我会得到错误:
对 name2::_test 的 undefined reference
如果我在 name2 添加 extern 我得到错误:
_test 模棱两可
最佳答案
您遇到的问题是您使用的命名空间之间的符号冲突。
这是在禁止 using namespace
的样式指南中使用的典型示例。 .
您可以在标识符前加上 NS::
,而不是包括整个命名空间。 ,例如:name1::_test
.
或者,可以通过以下方式有选择地使用命名空间中的元素:using NS::Identifier
.但是,我从来没有发现自己处于需要全局的情况,所以不知道这是否有效。
一条建议:不要使用全局变量,将指针或引用作为函数的参数传递更易于维护。
关于c++11 - 如何在另一个命名空间中使用一个命名空间的指针,并且两个命名空间都在另一个类中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51719786/