重载时类型无效 "operator+"
Invalid types when overloading "operator+"
我需要做一个链表,并在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
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 无法访问嵌套类.类的使用无效
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 'operator='已弃用:改用 QDir::setPath()
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- 二进制'operator+' 'int*'和'int*'类型的无效操作数
- 错误:二进制'operator*' 'int [1]'和'float'类型的操作数无效
- 错误:C++ 中二进制"operator%"类型"float"和"int"的操作数无效
- 类型为"double" snd const char [3]' 到二进制'operator<<'的无效操作数
- 错误:二进制'operator^' 'float'和'int'类型的操作数无效
- 二进制'operator%' 'long long int'类型的操作数无效
- 二进制'operator<<' 'const char [6]'和'const char [3]'类型的无效操作数
- 'char*'和'const char [2]'到二进制'operator+'类型的 C++ 无效操作数
- C++二进制'operator+' 'const char*'和'const char [2]'类型的无效操作数
- 重载ostream&时转换错误无效;operator< & lt;
- 错误:将' double* '和' double '类型的操作数转换为二进制' operator/ '无效
- 重载时类型无效 "operator+"