surcharges et références

surcharges et références - C++ - Programmation

Marsh Posté le 26-04-2016 à 13:54:08    

Bonjour j'ai une surcharge de cette forme
 
A.hpp
 

Code :
  1. class A
  2. {
  3.   ...
  4.   A operator+(const A & );
  5.   void A::Fx(const A& );
  6.    ...
  7. }


 
A.cpp
 

Code :
  1. A A::operator+(const A &p)
  2. {
  3.    return A(data + p.data);
  4. }


 
dans mon code je fait un truc de la sorte
 

Code :
  1. ....
  2. A a1;
  3. A a2;
  4. A b;
  5. ....
  6. b.Fx(a1 + a2);


 
 
j'obtiens cette erreur
 

error: no matching function for call to A::Fx(A)


 
je ne comprends pas pourquoi il ne recherche pas ma A::Fx(&A)
 
 
 
par contre si je passe par une variable intermédiaire ça marche bien
 

Code :
  1. ....
  2. A a1;
  3. A a2;
  4. A aTemp;
  5. A b;
  6. ....
  7. aTemp = a1 + a2;
  8. b.Fx(aTemp);


 
Je suppose une conversion au = ou la création d'une variable a portée plus large.
mais j'aimerais que l'on m'explique
 


Message édité par une IA le 26-04-2016 à 13:56:33
Reply

Marsh Posté le 26-04-2016 à 13:54:08   

Reply

Marsh Posté le 26-04-2016 à 15:41:53    

Chais pas quel compilo tu utilises, mais ça_marche_chez_moi™ (windows, mingw, gcc 4.5)

Reply

Marsh Posté le 26-04-2016 à 16:41:25    

gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)

Reply

Marsh Posté le 27-04-2016 à 14:37:35    

ton erreur semblerait normale si tu avais le prototype suivant :

Code :
  1. void A::Fx(A& );


 
Mais vu que tu as un const, ca devrait effectivement compiler.
Tu peux faire un petit exemple qui reproduit ton erreur et qui soit compilable par nous ? (sans code manquant)
 
Au passage : Tu n'as vraiment pas la possibilité d'utiliser un compilateur moins vieux


---------------
last.fm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed