重载“operator +”时类型无效

时间:2014-04-13 18:08:06

标签: c++ overloading

我需要做一个链接列表并在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;
}

有什么建议吗?

2 个答案:

答案 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;