Surcharge C++
Résolu
guadoc
Messages postés
89
Statut
Membre
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
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)