C 11无法解析嵌套名称空间

C++11 cannot resolve nested namespace

本文关键字:嵌套 空间      更新时间:2023-10-16

说我在 namespace Fooo下在foo.h中创建一个类Foo,如下:

foo.h:
namespace Fooo {
    class Foo {
    };
}

及其相应的源文件:

foo.cpp:
namespace Fooo {
Foo::Foo() {
}
} 

i编写另一个源文件util.cpp来为util.cpp中的Foo类创建一些实用程序功能:

util.cpp:
namespace Fooo {
    namespace util {
        void helper() {
        }
    }
}

现在在main.cpp中,当我致电Fooo::util::help()时,编译器给我以下错误:

error: no member named 'util' in namespace 'Fooo'

对此有什么想法吗?对我来说真的很奇怪。

注意:我使用的是clang 3.6,带有-std = C 11支持。

您可能想在.h文件中声明助手,并将该文件包含在main.cpp中。

问题是汇编单元main.cpp尚未对此功能声明。就编译器而言,不存在此类功能。

最少,编译器需要知道需要什么参数,以便生成代码来调用它。