C++ 如何引用外部C++;从嵌套的名称空间中删除名称空间?

C++ 如何引用外部C++;从嵌套的名称空间中删除名称空间?,c++,gcc,namespaces,C++,Gcc,Namespaces,我在默认的/“根”名称空间中定义了两个名称空间,nsA和nsB。nsA有一个子命名空间nsA::subA。当我尝试从nsA::subA内部引用属于nsB的函数时,我得到一个错误: undefined reference to `nsA::subA::nsB::theFunctionInNsB(...)' 有什么想法吗?使用全局范围分辨率: ::nsB::TheFunctionInNsB() #包括 名称空间nsB{ void foo(){ printf(“nsB::foo()\n”); }

我在默认的/“根”名称空间中定义了两个名称空间,nsA和nsB。nsA有一个子命名空间nsA::subA。当我尝试从nsA::subA内部引用属于nsB的函数时,我得到一个错误:

undefined reference to `nsA::subA::nsB::theFunctionInNsB(...)'

有什么想法吗?

使用全局范围分辨率:

::nsB::TheFunctionInNsB()
#包括
名称空间nsB{
void foo(){
printf(“nsB::foo()\n”);
}
}
名称空间nsA{
void foo(){
printf(“nsA::foo()\n”);
}
命名空间子对象{
void foo(){
printf(“nsA::subA::foo()\n”);
printf(“调用nsB::foo()\n”);

::nsB::foo();//需要更多信息来解释该错误。以下代码很好:

#include <iostream>

namespace nsB {
    void foo() { std::cout << "nsB\n";}
}

namespace nsA {
    void foo() { std::cout << "nsA\n";}
    namespace subA {
        void foo() { std::cout << "nsA::subA\n";}
        void bar() {
            nsB::foo();
        }
    }
}

int main() {
    nsA::subA::bar();
}
#包括
名称空间nsB{
void foo(){std::cout“您是否可能#从名称空间subA内部包含nsB的头?”--确实,我有。捕捉得很好,解释得很好。
#include <iostream>

namespace nsB {
    void foo() { std::cout << "nsB\n";}
}

namespace nsA {
    void foo() { std::cout << "nsA\n";}
    namespace subA {
        void foo() { std::cout << "nsA::subA\n";}
        void bar() {
            nsB::foo();
        }
    }
}

int main() {
    nsA::subA::bar();
}