class MyClass{
public:
MyClass(int t=0):m(t){ }
friend MyClass operator-(MyClass,MyClass);
int Getm()const
{
return m;
}
private:
int m;
};
MyClass operator-(MyClass t1,MyClass t2)
{
//ERROR**********found**********
return t1-t2;
//这里答案改成了return MyClass(t1.m-t2.m) 为什么不能直接改成return t1.m-t2.m
这需要看你的方法的返回值是什么
return MyClass(t1.m-t2.m);
这个返回的是MyClass类型的值,而
return t1.m-t2.m;
可能只是返回了一个int或者float类型的值。
1.t1和t2都是class,所以当然不能直接相减,除非运算符重载之后才可以,你这函数本来就是用于运算符重载,不能自己调用自己
2.减法返回类型是myclass,不是int,你t1.m-t2.m减完是个int啊