C++11 如何在另一个名称空间中使用一个名称空间的指针?两个名称空间都在另一个类中使用

C++11 如何在另一个名称空间中使用一个名称空间的指针?两个名称空间都在另一个类中使用,c++11,namespaces,C++11,Namespaces,下面是我们面临的问题的示例代码 文件1.h 文件2.h newfile.cpp 有了以上信息,我将得到错误: 对名称2的未定义引用::\u测试 如果我在name2中添加extern,我会得到错误: _测试不明确您遇到的问题是正在使用的名称空间之间的符号冲突。 这是样式指南中使用的一个典型示例,它禁止使用名称空间 不包括整个名称空间,您可以使用NS::作为标识符的前缀,例如:name1::\u test 或者,可以通过使用:使用NS::Identifier有选择地使用命名空间中的元素。然而,我从来

下面是我们面临的问题的示例代码

文件1.h 文件2.h newfile.cpp 有了以上信息,我将得到错误:
对名称2的未定义引用::\u测试

如果我在name2中添加extern,我会得到错误:

_测试不明确

您遇到的问题是正在使用的名称空间之间的符号冲突。 这是样式指南中使用的一个典型示例,它禁止
使用名称空间

不包括整个名称空间,您可以使用
NS::
作为标识符的前缀,例如:
name1::\u test

或者,可以通过使用:
使用NS::Identifier
有选择地使用命名空间中的元素。然而,我从来没有发现自己处于一种需要在全球范围内工作的情况,所以不知道这是否有效

一条建议:不要使用全局变量,将指针或引用作为函数的参数传递更容易维护

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();
}