我正在实现向量类,我需要得到一些向量的反义词。是否可以使用运算符重载来定义此方法?
这就是我的意思:
Vector2f vector1 = -vector2;
这是我希望该运算符完成的操作:
Vector2f& oppositeVector(const Vector2f &_vector)
{
x = -_vector.getX();
y = -_vector.getY();
return *this;
}
谢谢。
我正在实现向量类,我需要得到一些向量的反义词。是否可以使用运算符重载来定义此方法?
这就是我的意思:
Vector2f vector1 = -vector2;
这是我希望该运算符完成的操作:
Vector2f& oppositeVector(const Vector2f &_vector)
{
x = -_vector.getX();
y = -_vector.getY();
return *this;
}
谢谢。
.getX()
和使用.getY()
简单的Vector类型
Answers:
是的,但是您没有为其提供参数:
class Vector {
...
Vector operator-() {
// your code here
}
};
请注意,您不应返回* this。一元运算符需要创建一个崭新的Vector值,而不是更改要应用于它的对象,因此您的代码可能希望如下所示:
class Vector {
...
Vector operator-() const {
Vector v;
v.x = -x;
v.y = -y;
return v;
}
};
-
函数也可以由独立函数重载,这将紧密反映OP的实现oppositeVector
。
它的
Vector2f operator-(const Vector2f& in) {
return Vector2f(-in.x,-in.y);
}
可以在班级内,也可以在班级外。我的示例在名称空间范围内。
Vector2f
作为参数,因为它是在namespace-而非类范围限定。我的回答是正确的。