【发布时间】:2012-06-16 01:09:43
【问题描述】:
我正在尝试从另一个文件中的类声明一个对象。我已将#include "transfer.h" 添加到我的metadata.cpp 文件中,但出现以下错误:
metadata.o: In function `importMetadata':
metadata.cpp:(.text+0x81): undefined reference to A::B::C::Transfer::Transfer()'
metadata.cpp:(.text+0x81): undefined reference to A::B::C::Transfer::~Transfer()'
Transfer 在transfer.h中定义
namespace A{
namespace B{
namespace C{
class Transfer {
public:
Transfer();
~Transfer();
int copydata();
... more code goes here.
};
}
}
}
文件transfer.cpp 如下所示:
Transfer::Transfer(){
}
Transfer::~Transfer(){
}
我还在 metadata.cpp 文件的标题上创建了using namespace A::B::C;。有人可以帮我吗?
在metadata.cpp 中的函数int importMetadata() 中我声明Transfer transfer; 所以在metadata.cpp 中我正在执行'transfer.copydata();`
【问题讨论】:
-
请向我们展示一个重现您的错误的完整示例。
-
很少有需要这么多嵌套命名空间的情况,实际上也从来没有情况需要
using namespace... -
Transfer是否定义了默认构造函数?该错误只是告诉您链接器找不到Transfer()的实现。 -
可能是您声明了一个,但没有定义它,或者链接器无法找到定义。
-
请查看我所做的更改