私はベクタークラスを実装していますが、ベクターの反対を取得する必要があります。演算子のオーバーロードを使用してこのメソッドを定義することは可能ですか?
ここに私が意味するものがあります:
Vector2f vector1 = -vector2;
このオペレーターが達成したいことは次のとおりです。
Vector2f& oppositeVector(const Vector2f &_vector)
{
x = -_vector.getX();
y = -_vector.getY();
return *this;
}
ありがとう。
はい。ただし、パラメーターを指定しません。
class Vector {
...
Vector operator-() {
// your code here
}
};
* thisを返すべきではないことに注意してください。単項演算子は、適用されるものを変更するのではなく、新しいVector値を作成する必要があるため、コードは次のようになります。
class Vector {
...
Vector operator-() const {
Vector v;
v.x = -x;
v.y = -y;
return v;
}
};
それは
Vector2f operator-(const Vector2f& in) {
return Vector2f(-in.x,-in.y);
}
クラス内または外部に配置できます。私のサンプルは名前空間の範囲内です。