【问题标题】:C++11 cannot resolve nested namespaceC++11 无法解析嵌套命名空间
【发布时间】:2015-07-22 16:49:09
【问题描述】:

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

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'

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

注意:我正在使用带有 -std=c++11 支持的 clang++ 3.6。

【问题讨论】:

  • 附带问题:您还需要在头文件foo.h声明您的构造函数Foo();

标签: c++ namespaces nested


【解决方案1】:

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

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

至少,编译器需要知道它需要什么参数,这样它才能生成代码来调用它。

【讨论】:

  • 谢谢!确实是这个问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
相关资源
最近更新 更多