Surcharge C++
Résolu
guadoc
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 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 :
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)