报错原因:重载函数只能有一个参数
TwoCoor operator+(TwoCoor& a, TwoCoor& b);
TwoCoor operator-(TwoCoor& a, TwoCoor& b);
双目运算符只能有两个操作数,operator左边twocoor和右边参数分别是一个操作数,所以参数只能有一个,解决方法就是利用友元函数
单目运算符只能由一个操作数,故重载单目运算符的函数无参数
解决方法
1.在类里public声明
friend TwoCoor operator+(TwoCoor& a, TwoCoor& b);
friend TwoCoor operator-(TwoCoor& a, TwoCoor& b);
2.在类外定义友元函数
TwoCoor operator+(TwoCoor& a, TwoCoor& b)
{
TwoCoor r;
r.x = a.x + b.x;
r.y = a.y + b.y;
return r;
}
TwoCoor operator-(TwoCoor& a, TwoCoor& b)
{
TwoCoor r;
r.x = a.x - b.x;
r.y = a.y - b.y;
return r;
}
注意:不能直接x = a.x - b.x ;y = a.y - b.y;