【发布时间】:2016-01-13 03:01:31
【问题描述】:
我有一个自定义类,正在尝试为 = 创建一个运算符重载函数。不幸的是,我得到的错误并不指向特定的行或错误,我只是得到以下错误。
未解析的外部符号“public: int __thiscall sequence::size(void)const” (?size@sequence@@QBEHXZ) 在函数“public: 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;
【问题讨论】:
-
该错误与
operator =本身无关。编译器(链接器)告诉您忘记定义size()函数。size()的定义在哪里?
标签: c++