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.
A voir également:
- Surcharge C++
- Surcharge au niveau du cable antenne - Forum TV & Vidéo
- Surcharge lnb - Forum TNT / Satellite / Réception
- Surcharge antenne - Forum TNT / Satellite / Réception
- Surcharge du circuit LNB - Forum TNT / Satellite / Réception
- Court circuit LNB " apparaît. - Forum TNT / Satellite / Réception
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)