Surcharge d'opérateur

korin221 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Je me permet de vous envoyer un message car j'ai un petit problème.
Je doit réaliser une surcharge d'opérateur "-" de nombre rationnel de type x=a/b à partir d'une surcharge d'opéraeur "+" que j'ai réaliser comme ceci:

rational rational :: operator +(rational M)
{
rational p;
P.a=(a*M.b)+(M.a*b);
P.b=b*M.b;
return P;
}

Je ne vois pas comment réaliser une surcharge - à partir de la surcharge +.
Merci de votre aide.



1 réponse

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Personnellement, je déclare généralement les opérateurs en dehors de la classe comme ceci :

#ifndef COMPLEX_HPP
#define COMPLEX_HPP

class complex_t {
private:
  double a;
  double b;

public:
  complex_t(){}

  complex_t(const double & a0, const double & b0):
    a(a0), b(b0)
  {}

  inline const double & get_real() const {
    return a;
  }

  inline const double & get_imag() const {
    return b;
  }
};

inline complex_t operator - (
  const complex_t & x,
  const complex_t & y
) {
  return complex_t(
    x.get_real() - y.get_real(),
    x.get_imag() - y.get_imag()
  );
}

#endif


Note que dans cette fonction, comme les fonctions sont très courtes je les ai mises directement dans le ".hpp". Dans ce cas les opérateurs et méthodes doivent être inline sinon tu peux avoir des définitions multiples (ou sinon, tu déportes leur implémentation dans un ".cpp").

Bonne chance
0