C ++ 11无法解析嵌套的命名空间

时间:2015-05-12 01:28:55

标签: c++ namespaces nested

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

foo.h:

namespace Fooo {
    class Foo {
    };
}

及其相应的源文件:

foo.cpp:

namespace Fooo {
Foo::Foo() {
}
} 

我写了另一个源文件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支持。

1 个答案:

答案 0 :(得分:2)

您可能希望在.h文件中声明帮助程序并将该文件包含在main.cpp中。

问题是编译单元main.cpp还没有给出这个函数的声明。就编译器而言,不存在这样的函数。

最低限度,编译器需要知道它所采用的参数,以便生成调用它的代码。