Const, référence, et autre

Const, référence, et autre - C++ - Programmation

Marsh Posté le 19-07-2007 à 17:07:23    

Salut,
 
j'arrête pas de galérer avec la conformité des arguements que je passe à un opérateur, via une fonction...
 
Voilà mon cas :
 

Code :
  1. Color
  2. Color::operator-(const Color& color)
  3. {
  4.  Color result;
  5.    result.red  =red-color.red;
  6.    result.green =green-color.green;
  7.    result.blue  =blue-color.blue;
  8.    result.alpha =alpha-color.alpha;
  9.  return result;
  10. }
  11. Color
  12. linear_interpolation(const Color& start_value, const Color& end_value, const float& interpolation_coefficient)
  13. {
  14.  Color result =start_value + (end_value - start_value) * interpolation_coefficient;
  15.  return result;
  16. }


 
Et bien sûr, j'ai droit à
 

Code :
  1. E2093 : 'operator-' not implemented in type 'Color' for arguments of the same type in function linear_interpolation.


 
J'espère que vous pourrez m'aider  :jap:

Reply

Marsh Posté le 19-07-2007 à 17:07:23   

Reply

Marsh Posté le 19-07-2007 à 17:18:59    

C'est que ton operateur doit etre const lui aussi, pas seulement ses parametres :
 

Code :
  1. Color::operator-(......) const

Reply

Marsh Posté le 19-07-2007 à 18:05:11    

ah yes !! merci

Reply

Marsh Posté le 20-07-2007 à 09:27:43    

beurl toussa. Défini pluto :

Code :
  1. Color& Color::operator-=(const Color& );
  2. // et
  3. Color operator-(const Color &a, const Color &b)
  4. {
  5.   Color diff(a);
  6.   diff -= b;
  7.   return diff;
  8. }


 
et là t'es carré et complet.

Reply

Marsh Posté le 21-07-2007 à 11:29:35    

Taz a écrit :

beurl toussa. Défini pluto :

Code :
  1. Color& Color::operator-=(const Color& );
  2. // et
  3. Color operator-(const Color &a, const Color &b)
  4. {
  5.   Color diff(a);
  6.   diff -= b;
  7.   return diff;
  8. }


 
et là t'es carré et complet.


 
bien d'accord avec toi... l'operateur - n'a pas lieu d'etre un operateur de class car en aucun cas il n'agit sur l'obejt qu'il manipule (contrairement à -=).

Reply

Sujets relatifs:

Leave a Replay

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