尝试重载 = 运算符时出现 1 个未解决的外部错误
1 unresolved externals error when trying to overload= operator
我有一个自定义 class 并且正在尝试为 = 创建一个运算符重载函数。不幸的是,我得到的错误没有指向特定的行或错误我只是得到以下错误。
unresolved external symbol "public: int __thiscall sequence::size(void)const " (?size@sequence@@QBEHXZ) referenced in function "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++;
}
}
大小函数,就是returns序列的大小。在 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;
"unresolved external" 错误发生在编译的 link 步。有关详细信息,请参阅 this question。请注意,在编译步骤中,编译器从 Sequence2.cpp
(及其包含的所有内容)生成 Sequence2.obj
。
是的,link错误比实际编译源代码期间发生的编译器错误要棘手一些。
我猜你的代码中某处有类似
的东西
class sequence
{
// ... some declarations
int size();
// ... more declarations
}
但是没有对应的
int sequence::size()
{
// implementation of size()
}
或者可能有 size()
的实现,但未编译。在这种情况下检查您的项目设置/makefile。或者它已经被编译但是结果'.obj'文件没有被linker.
使用
错误消息至少声称 linker 不知道 .obj
文件包含 size()
实现的翻译(即编译)副本。
我有一个自定义 class 并且正在尝试为 = 创建一个运算符重载函数。不幸的是,我得到的错误没有指向特定的行或错误我只是得到以下错误。
unresolved external symbol "public: int __thiscall sequence::size(void)const " (?size@sequence@@QBEHXZ) referenced in function "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++;
}
}
大小函数,就是returns序列的大小。在 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;
"unresolved external" 错误发生在编译的 link 步。有关详细信息,请参阅 this question。请注意,在编译步骤中,编译器从 Sequence2.cpp
(及其包含的所有内容)生成 Sequence2.obj
。
是的,link错误比实际编译源代码期间发生的编译器错误要棘手一些。
我猜你的代码中某处有类似
的东西class sequence
{
// ... some declarations
int size();
// ... more declarations
}
但是没有对应的
int sequence::size()
{
// implementation of size()
}
或者可能有 size()
的实现,但未编译。在这种情况下检查您的项目设置/makefile。或者它已经被编译但是结果'.obj'文件没有被linker.
错误消息至少声称 linker 不知道 .obj
文件包含 size()
实现的翻译(即编译)副本。