[英]Error when implementing overloading operator “+”
我有一个MyClass
,它是一个链接列表,我已经覆盖了运算符+:
MyNode
{
int value;
MyNode* link;
}
MyClass
{
MyNode* first;
MyNode* current;
MyNode* last;
int count;
}
MyClass MyClass::operator+(MyClass* operand)
{
MyClass sum;
for(int i = 0; i < count; i++)
{
MyNode* newNode
newNode->value = value + operand->value;
sum->insert(newNode);
}
return sum;
}
当我尝试在我的main函数中实现它时,如下所示:
MyClass* a = new MyClass();
MyClass* b = new MyClass();
MyClass* c;
c = a + b;
编译器抛出一个错误:“无法添加两个指针”。
你是来自Java背景吗? 您不需要new
来创建对象:
尝试这个:
MyClass MyClass::operator+(const MyClass& operand)
{
MyClass result;
// Perform addition ...
return result;
}
MyClass a;
MyClass b;
MyClass c;
c = a + b;
两个问题。 首先,您的运营商签名错误。 operator+
应该将const引用作为参数并返回一个const值。 从而:
const MyClass MyClass::operator+(const MyClass& operand)
其次,您试图添加指针本身而不是它们指向的对象。 所以你需要:
*c = *a + *b;
要100%正确,操作符本身应该声明为const
函数:
const MyClass MyClass::operator+(const MyClass& operand) const
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.