我有一个自定义类,我正在尝试为=创建一个运算符重载函数。不幸的是,我得到的错误并没有指向特定的行或错误我只是得到以下错误。
未解析的外部符号" public:int __thiscall sequence :: size(void)const"函数" public中引用的(?size @ sequence @@ QBEHXZ):void __thiscall sequence :: operator =(class sequence const&)" (?? 4sequence @@ QAEXABV0 @@ Z)
它在文件Sequence2.obj第1行。由于这不是我编辑的文件,我有点不确定该函数中的错误是什么。
Sequence2.cpp
void sequence::operator=(const sequence & source)
{
if (size() <= source.size()) {
delete[] data;
data = new value_type[source.size()];
current_index = -1;
used = 0;
}
else {
delete[] data;
data = new value_type[source.size() * 2];
current_index = -1;
used = 0;
}
for (int i = 0; i < source.size(); i++)
{
data[i] = source.data[i];
used++;
current_index++;
}
}
size函数,只返回序列的大小。在Main.cpp上我只有以下内容。
sequence test; // A sequence that we’ll perform tests on
sequence test2;
test.insert(33);
test.insert(35);
test.insert(36);
test2 = test;
答案 0 :(得分:0)
&#34;未解决的外部&#34;在编译的链接步骤期间发生错误。有关详细信息,请参阅this question。请注意,在编译步骤中,编译器从Sequence2.obj
创建Sequence2.cpp
(并将其包括在内)。
是的,链接器错误比在实际编译源代码期间发生的编译器错误有点棘手。
我想你的代码中的某处就像
class sequence
{
// ... some declarations
int size();
// ... more declarations
}
但没有相应的
int sequence::size()
{
// implementation of size()
}
或者可能有size()
的实现,但它没有编译。在这种情况下,请检查项目设置/ makefile。或者它已被编译但结果&#39; .obj&#39;链接器不使用该文件。
错误消息至少声称链接器不知道.obj
文件包含size()
实现的已翻译(即已编译)对应文件。