c++ - 实现重载运算符时出错 "+"

标签 c++ operator-overloading

我有一个 MyClass,它是一个链表,我已经覆盖了 operator+:

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;

编译器抛出错误:“无法添加两个指针”。

最佳答案

您有 Java 背景吗?您不需要 new 来创建对象:

试试这个:

MyClass MyClass::operator+(const MyClass& operand)
{
   MyClass result;

   // Perform addition ...

   return result;  
}

MyClass a;
MyClass b;
MyClass c;

c = a + b;

关于c++ - 实现重载运算符时出错 "+",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13003860/

相关文章:

c++ - 零值上的一元运算符-() - C++

c++ - 为什么标准容器迭代器不重载 `->*` ?

C++ 在环境变量 RC 中找不到编译器集

c++ - 在QML中将regExp创建到textField

C++ - 模板模板参数可以是变量或函数吗?

c++ - 重载输入/输出运算符,为什么它以这种方式工作而不是另一种方式?

<< 运算符的 c++11 特定重载

C++ Qt 返回空 QString

c++ - CPP std::thread 尝试使用已删除的函数

C++,我可以重载类的一个点的赋值运算符吗?