重载时类型无效 "operator+"

Invalid types when overloading "operator+"

本文关键字:operator+ 无效 类型 重载      更新时间:2023-10-16

我需要做一个链表,并在C++中重载"+"运算符。我读过一些这样的文章,但没有成功。基本上,我有一个类似上面的简单类,但实际上是一个错误:类型为"MyList*"answers"MyList*'的无效操作数到二进制"operator+"

class MyList {
private:
    int value;
    MyList* next;
public:
    MyList(int value);
    ~MyList();
    MyList* operator+(MyList* list){
        return new MyList(this->value + list->value);
    }
};
MyList::MyList(int value) {
    this->next = NULL;
    this->value = value;
}
MyList::~MyList() {
    cout << "Destroy" << endl;
}
int main() {
    MyList *list1 = new MyList(5);
    MyList* list2 = new MyList(2);
    MyList* result = list1 + list2; //here this error: invalid operands of types ‘MyList*’ and ‘MyList*’ to binary ‘operator+’
    cout << result;
    delete list1;
    delete list2;
    delete result;
    return 0;
}

有什么建议吗?

以以下方式定义操作员

MyList * operator +( const MyList &list ) const
{
    return new MyList(this->value + list->value);
}

并将其称为

MyList* result = *list1 + *list2;

您需要使用引用,而不是指针
不管怎样,你似乎有指针性,对指针的不健康的热爱。使用一些适当的值,而不是使用动态分配
从历史上看,引入的参考文献是操作员过载btw.

此外,您还需要从operator+返回一个新的MyList。

使用成员函数:MyList operator+(const MyList& list) const