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   -
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.

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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)
0
guadoc Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   5
 
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é.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
ça peut poser problème si tu fait l'opération sur une classe Valeur constante. C'est pour ça que le plus propre c'est de mettre en const un certain nombre de méthodes.
0