C++11 无法解析嵌套命名空间
C++11 cannot resolve nested namespace
假设我在 namespace Fooo
下的 foo.h 中创建了一个 class Foo
,如下所示:
foo.h:
namespace Fooo {
class Foo {
};
}
及其对应的源文件:
foo.cpp:
namespace Fooo {
Foo::Foo() {
}
}
我编写了另一个源文件 util.cpp
来为 util.cpp 中的 Foo
class 创建一些实用函数:
util.cpp:
namespace Fooo {
namespace util {
void helper() {
}
}
}
现在在 main.cpp
中,当我调用 Fooo::util::help()
时,编译器会给我以下错误:
error: no member named 'util' in namespace 'Fooo'
对此有什么想法吗?这对我来说真的很奇怪。
注意:我使用的是支持 -std=c++11 的 clang++ 3.6。
您可能想在 .h 文件中声明帮助程序并将该文件包含在 main.cpp 中。
问题是编译单元 main.cpp 没有得到这个函数的声明。对于编译器来说,没有这样的功能。
至少,编译器需要知道它接受什么参数,以便生成代码来调用它。
假设我在 namespace Fooo
下的 foo.h 中创建了一个 class Foo
,如下所示:
foo.h:
namespace Fooo {
class Foo {
};
}
及其对应的源文件:
foo.cpp:
namespace Fooo {
Foo::Foo() {
}
}
我编写了另一个源文件 util.cpp
来为 util.cpp 中的 Foo
class 创建一些实用函数:
util.cpp:
namespace Fooo {
namespace util {
void helper() {
}
}
}
现在在 main.cpp
中,当我调用 Fooo::util::help()
时,编译器会给我以下错误:
error: no member named 'util' in namespace 'Fooo'
对此有什么想法吗?这对我来说真的很奇怪。
注意:我使用的是支持 -std=c++11 的 clang++ 3.6。
您可能想在 .h 文件中声明帮助程序并将该文件包含在 main.cpp 中。
问题是编译单元 main.cpp 没有得到这个函数的声明。对于编译器来说,没有这样的功能。
至少,编译器需要知道它接受什么参数,以便生成代码来调用它。