69 votes

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

J'implémente la classe de vecteur et j'ai besoin d'obtenir un opposé à un vecteur. Est-il possible de définir cette méthode en utilisant la 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.

27voto

Alexander Gessler Points 26717

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.

-1voto

 Vector2f operator-(const Vector2f &_vector)
{
   Vector2f result;
   result.setX(-_vector.getX());
   result.setY(-_vector.getY());

   return result;
}
 

Et vous pourriez aussi vouloir surcharger d'autres opérateurs associés:

 class Vector2f
{
public:
   // ...
   Vector2f& operator-=(const Vector2f& other);
};

// binary minus
Vector2f operator-(const Vector2f& lhs, const Vector2f& rhs)
{
    Vector2f result = lhs;
    return result -= rhs;
}
 

Et n'oubliez pas de mettre ces opérateurs dans le même espace de noms avec Vector2f.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X