我试图从另一个文件中的类声明一个对象。我已将#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.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;
。有人可以帮我吗?在
int importMetadata()
中的metadata.cpp
函数中,我声明了Transfer transfer;
,因此在metadata.cpp
中,我正在执行'transfer.copydata();`。 最佳答案
希望您省略了transfer.cpp文件的一部分,但如果没有,则应定义命名空间以匹配您的头文件,如下所示:
namespace A{
namespace B{
namespace C{
Transfer::Transfer(){
}
Transfer::~Transfer(){
}
}
}
}
如果内嵌或上面完全定义了命名空间,则需要确保项目中包含transfer.cpp文件。似乎链接器无法找到您的源文件。
关于c++ - C++构造函数未定义引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11059970/