Surcharge d'opérateur

Fermé
korin221 Messages postés 10 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 13 janvier 2013 - 13 janv. 2013 à 11:42
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 14 janv. 2013 à 10:36
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 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
14 janv. 2013 à 10:36
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