我试图创建一个简单的向量类,但遇到了问题。 这是我的代码片段:
class Vector2D{
protected:
int x, y;
public:
Vector2D operator - (const Vector2D&);
friend int SumDiff(const Vector2D& obj1, const Vector2D& obj2);
};
Vector2D Vector2D::operator - (const Vector2D& param)
{
Vector2D obj;
obj.x = x - param.x;
obj.y = y - param.y;
return obj;
}
int SumDiff(const Vector2D& obj1, const Vector2D& obj2)
{
int result;
Vector2D obj3;
obj3 = obj1 - obj2;
result = obj3.x + obj3.y;
return result;
}
该行代码 obj3 = obj1 - obj2;
被标记为错误。具体来说,此行中的运算符-
似乎不能将Vector2D
对象视为操作数。
即使SumDiff
函数是Vector2D
类的一部分,仍然会出现相同的问题。
只有在将运算符-
重载为非成员函数时,此代码才能编译通过。为什么?
谢谢!