我有一个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;
}
当我尝试在我的主函数中实现它时,如下所示:
MyClass* a = new MyClass();
MyClass* b = new MyClass();
MyClass* c;
c = a + b;
编译器抛出错误:“无法添加两个指针”。
答案 0 :(得分:4)
你是来自Java背景吗?您不需要new
来创建对象:
试试这个:
MyClass MyClass::operator+(const MyClass& operand)
{
MyClass result;
// Perform addition ...
return result;
}
MyClass a;
MyClass b;
MyClass c;
c = a + b;
答案 1 :(得分:0)
两个问题。首先,您的运营商签名错误。 operator+
应该将const引用作为参数并返回一个const值。因此:
const MyClass MyClass::operator+(const MyClass& operand)
其次,您尝试添加指针本身而不是它们指向的对象。所以你需要:
*c = *a + *b;
要100%正确,操作符本身应声明为const
函数:
const MyClass MyClass::operator+(const MyClass& operand) const