1. ホーム
  2. c++

[解決済み] C++で単項マイナス演算子をオーバーロードするには?

2023-06-25 15:12:47

質問

vectorクラスを実装しているのですが、あるvectorの逆数を取得する必要があります。演算子のオーバーロードを使用してこのメソッドを定義することは可能でしょうか?

こんな感じです。

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;
   }
};