web-dev-qa-db-fra.com

Comment surcharger l'opérateur unaire moins en C ++?

J'implémente une classe vectorielle et j'ai besoin d'obtenir un contraire d'un vecteur. Est-il possible de définir cette méthode en utilisant une surcharge d'opérateur?

Voici ce que je veux dire:

Vector2f vector1 = -vector2;

Voici ce que je veux que cet opérateur accomplisse:

Vector2f& oppositeVector(const Vector2f &_vector)
{
 x = -_vector.getX();
 y = -_vector.getY();

 return *this;
}

Merci.

68
Ilya Suzdalnitski

Oui, mais vous ne lui fournissez pas de paramètre:

class Vector {
   ...
   Vector operator-()  {
     // your code here
   }
};

Notez que vous ne devez pas retourner * ceci. L'opérateur unaire doit créer une toute nouvelle valeur vectorielle, pas changer la chose à laquelle il est appliqué, donc votre code peut vouloir ressembler à ceci:

class Vector {
   ...
   Vector operator-() const {
      Vector v;
      v.x = -x;
      v.y = -y;
      return v;
   }
};
117
anon

Ses

Vector2f operator-(const Vector2f& in) {
   return Vector2f(-in.x,-in.y);
}

Peut être dans la classe ou à l'extérieur. Mon échantillon est dans la portée de l'espace de noms.

27
Alexander Gessler