Surcharge C++
Résolu
guadoc
Messages postés
89
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je programme en C++ et j'essaie de surcharger un opérateur.
Voici le code de la surcharge:
bool Valeur::operator<=(const Valeur &val){
int vv=val.value();
if (this->value()<=vv){
return true;
}
else{
return false;
}
}
La fonction value a été implémentée comme membre de la classe Valeur (public) et renvoie un int.
Le compilateur me renvoie un erreur que je ne comprend pas:
error C2662: 'Valeur::value' : impossible de convertir un pointeur 'this' de 'const Valeur' en 'Valeur &'
Pouvez vous m'expliquer ce qui ne fonctionne pas?
Je vous remercie d'avance pour vos contributions.
Je programme en C++ et j'essaie de surcharger un opérateur.
Voici le code de la surcharge:
bool Valeur::operator<=(const Valeur &val){
int vv=val.value();
if (this->value()<=vv){
return true;
}
else{
return false;
}
}
La fonction value a été implémentée comme membre de la classe Valeur (public) et renvoie un int.
Le compilateur me renvoie un erreur que je ne comprend pas:
error C2662: 'Valeur::value' : impossible de convertir un pointeur 'this' de 'const Valeur' en 'Valeur &'
Pouvez vous m'expliquer ce qui ne fonctionne pas?
Je vous remercie d'avance pour vos contributions.
2 réponses
-
essai de mettre value() à la place de this->value(). Peut être qu'il se mélange les pinceaux avec les symboles.
Sinon, ça viens de value().
Si tu appelles l'opérateur <= avec une Valeur constante et que value n'est pas déclaré const, il peut y avoir un problème. Dans Valeur, il faut faire :class Valeur { ... int& value(); const int value()const; ... };Je pense qu'il te manque le deuxième. (le premier n'est pas nécessaire) -
Merci.
J'avais le deuxième problème que tu as proposé.
J'ai enlevé le const dans la définition de la surcharge pour des raisons pratiques.
J'espère que ça ne pose pas de problème.
Merci beaucoup en tout cas ça m'a bien débloqué.