Surcharge de l'opérateur == et appel de méthode

Le
TSalm
Bonjour,

Je surcharge l'opérateur "==" ainsi :
bool Win::operator==(const Win &win2)
{
return getUID() == win2.getUID();
}

mais G++ me retourne cette erreur :
error: passing 'const winlist::Win' as 'this' argument of 'DWORD
winlist::Win::getUID()' discards qualifiers

Si je comprends bien ce message, je ne peux pas appeler de méthode getUID
sur win2 car il est "const". C'est bien ça ?
N'est-il pas possible d'appeler une méthode de win2 dans mon cas ?

A+
-TSalm
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Ketterlin
Le #23445131
TSalm
Je surcharge l'opérateur "==" ainsi :
bool Win::operator==(const Win &win2)
{
return getUID() == win2.getUID();
}

mais G++ me retourne cette erreur :
error: passing 'const winlist::Win' as 'this' argument of 'DWORD
winlist::Win::getUID()' discards qualifiers

Si je comprends bien ce message, je ne peux pas appeler de méthode
getUID sur win2 car il est "const". C'est bien ça ?



Oui, et que getUID() risque de le modifier.

N'est-il pas possible d'appeler une méthode de win2 dans mon cas ?



Si bien sûr, à condition d'être sûr que la méthode appelée n'apporte
aucune modification à l'objet, c'est-à-dire que la méthode e st const.

-- Alain.
Fabien LE LEZ
Le #23445151
On Thu, 09 Jun 2011 22:57:09 +0200, TSalm
bool Win::operator==(const Win &win2)
{
return getUID() == win2.getUID();



Normalement, operator== ne doit pas modifier l'objet dont il est
membre.
Il convient donc de le déclarer const :

bool Win::operator==(const Win &win2) const
{...}

Logiquement, la fonction membre getUID() se contente de renvoyer une
info, et ne modifie pas l'objet. Elle devrait donc aussi être déclarée
const. Ce qui résoudra probablement le problème.

Rajoute les "const" partout où ils manquent. Si ton code ne fonctionne
toujours pas, explique ce qu'est cette fonction getUID().
TSalm
Le #23449611
Le Thu, 09 Jun 2011 23:22:14 +0200, Fabien LE LEZ a écrit:

On Thu, 09 Jun 2011 22:57:09 +0200, TSalm
bool Win::operator==(const Win &win2)
{
return getUID() == win2.getUID();



Normalement, operator== ne doit pas modifier l'objet dont il est
membre.
Il convient donc de le déclarer const :

bool Win::operator==(const Win &win2) const
{...}

Logiquement, la fonction membre getUID() se contente de renvoyer une
info, et ne modifie pas l'objet. Elle devrait donc aussi être déclarée
const. Ce qui résoudra probablement le problème.

Rajoute les "const" partout où ils manquent. Si ton code ne fonctionne
toujours pas, explique ce qu'est cette fonction getUID().




C'est très logique. Merci de votre aide à tous les deux.
Publicité
Poster une réponse
Anonyme