【发布时间】:2021-03-12 12:37:25
【问题描述】:
class myClass
{
public:
int myVal;
myClass(int val) : myVal(val)
{
}
myClass& operator+(myClass& obj)
{
myVal = myVal + obj.myVal;
return *this;
}
myClass& operator+(int inVal)
{
myVal = myVal + inVal;
return *this;
}
myClass& operator=(myClass& obj)
{
myVal = obj.myVal;
return *this;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
myClass obj1(10);
myClass obj2(10);
obj1 = obj1 + obj2;
obj1 = 20 + obj2; // Error : No matching operands for operator "+"
return 0;
}
如何将整数和 myClass 对象类型的运算符“+”实现为操作数? (obj1 = 20 + obj2)
【问题讨论】:
-
声明如下:myClass operator+(int v, myClass const& obj)。您还必须将 operator 声明为 myClass 类的朋友或公开您的类成员(不推荐)
-
非常感谢你们!
标签: c++ operator-overloading assignment-operator friend-function