我需要做一个链接列表并在C ++中重载'+'运算符。 我读了一些像this这样的文章,但没有成功。 基本上,我有一个像上面这样的简单类,但实际上是一个错误:类型'MyList *'和'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;
}
有什么建议吗?
答案 0 :(得分:0)
您需要使用引用,而不是指针 无论如何,你似乎有指针,对指针的不健康的爱。使用一些适当的值而不是使用动态分配 从历史上看,引入了操作符重载btw的引用。
此外,您需要从operator+
返回一个新的MyList。
使用会员功能:MyList operator+(const MyList& list) const
答案 1 :(得分:0)
按以下方式定义运算符
MyList * operator +( const MyList &list ) const
{
return new MyList(this->value + list->value);
}
并在main中将其称为
MyList* result = *list1 + *list2;