C++ 如何引用外部C++;从嵌套的名称空间中删除名称空间?
我在默认的/“根”名称空间中定义了两个名称空间,nsA和nsB。nsA有一个子命名空间nsA::subA。当我尝试从nsA::subA内部引用属于nsB的函数时,我得到一个错误: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”); }
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();
}