繁体   English   中英

尝试重载=运算符时出现1个未解决的外部错误

[英]1 unresolved externals error when trying to overload= operator

我有一个自定义类,正在尝试为=创建运算符重载函数。 不幸的是,我得到的错误没有指向特定的行或错误,我只是得到以下错误。

未解析的外部符号“ 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;

在编译的链接步骤中发生“未解决的外部”错误。 有关更多详细信息,请参见此问题 请注意,在编译步骤中,编译器从Sequence2.cpp (及其包含的所有内容)中创建了Sequence2.obj

是的,链接器错误比实际编译源代码期间发生的那些编译器错误要棘手。

我猜你在代码的某处有类似

class sequence
{
    // ... some declarations

    int size();

    // ... more declarations
}

但是没有对应的

int sequence::size()
{
    // implementation of size()
}

也许有一个size()的实现,但是它没有被编译。 在这种情况下,请检查项目设置/ makefile。 或者它已被编译,但是链接器未使用结果“ .obj”文件。

该错误消息至少声明链接器不知道.obj文件,该文件包含size()实现的已翻译(即,已编译)副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM