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 ?
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().
On Thu, 09 Jun 2011 22:57:09 +0200, TSalm <tsalm@free.fr>:
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().
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 Thu, 09 Jun 2011 23:22:14 +0200, Fabien LE LEZ a écrit:
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.
Le Thu, 09 Jun 2011 23:22:14 +0200, Fabien LE LEZ <gramster@gramster.com>
a écrit:
On Thu, 09 Jun 2011 22:57:09 +0200, TSalm <tsalm@free.fr>:
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.
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.