说我在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支持。
答案 0 :(得分:2)
您可能希望在.h文件中声明帮助程序并将该文件包含在main.cpp中。
问题是编译单元main.cpp还没有给出这个函数的声明。就编译器而言,不存在这样的函数。
最低限度,编译器需要知道它所采用的参数,以便生成调用它的代码。