【发布时间】:2012-01-06 16:05:24
【问题描述】:
我有一个命名空间,我想在其中定义一个类。这个类相当复杂,所以我宁愿在单独的头文件中定义它,但即使是最简单的代码也会给我一个“未定义的引用”错误。
main.cpp
#include <iostream>
namespace A {
#include "C.hpp"
}
int main()
{
A::C foo;
std::cout << foo.member << std::endl;
return 0;
}
C.hpp
class C {
public:
C();
int member;
}
C.cpp
C::C()
{
this->member = 10;
}
当我运行g++ C.cpp main.cpp 时,我得到“main.cpp:(.text+0x10): undefined reference to `A::C::C()'”错误。我想这是构造函数的 C::C() 定义有点错误,但我不确定如何修复它。
【问题讨论】:
-
你的定义是错误的......
-
我假设您已经这样做了,因为您遇到了命名冲突。在这一点上,我只想说:“我希望您已经吸取了有关在创建类时忽略名称空间的教训。
标签: c++ class namespaces reference undefined