我正在实现向量类,我需要得到一些向量的反面。是否可以使用运算符重载来定义此方法?
这就是我的意思:
Vector2f vector1 = -vector2;
以下是我希望此操作员完成的操作:
Vector2f& oppositeVector(const Vector2f &_vector)
{
x = -_vector.getX();
y = -_vector.getY();
return *this;
}
感谢。
答案 0 :(得分:114)
是的,但您没有为其提供参数:
class Vector {
...
Vector operator-() {
// your code here
}
};
请注意,您不应该返回* this。一元 - 运算符需要创建一个全新的Vector值,而不是更改它应用的东西,所以你的代码可能想看起来像这样:
class Vector {
...
Vector operator-() const {
Vector v;
v.x = -x;
v.y = -y;
return v;
}
};
答案 1 :(得分:26)
这是
Vector2f operator-(const Vector2f& in) {
return Vector2f(-in.x,-in.y);
}
可以在课堂内或外面。我的示例位于命名空间范围内。
答案 2 :(得分:-2)
正在寻找答案,同时用C ++(基于GMP)设计高精度算术库。与所说的相反,一元“ - ”必须返回新的价值,这段代码对我有用:
bigdecimal& bigdecimal::operator - () {
mpf_neg(this->x, this->x);//set left mpf_t var to -right
return *this;
}