IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème de surcharge d'operateur


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 89
    Points : 69
    Points
    69
    Par défaut Problème de surcharge d'operateur
    Bonjour j'ai une classe qui surcharge l'opérateur de comparaison == mais quand je compare deux instances de cette classe (les pointeurs sur ces objets) la comparaison semble se faire comme une simple comparaison des pointeurs, non pas par mon operateur == c'est normal ?
    si vous vous emmerdez codez codez et codez ça passera

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    si tu regardes bien la définition de l'opérateur c'est bool operator==(const MyClass& right) const; et comme ça l'indique, ça compare une référence constante (avec une autre référence constante pour l'opérande gauche).
    La comparaison de pointeur est impossible à surcharger, ça fait partie du core du langage.
    Pour utiliser l'opérateur avec tes pointeurs, tu peux faire if (*ptr == *ptr2) ou if (ptr->operator==(*ptr2)).
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    De plus, l'utilisation de pointeurs est souvent associée (ou en tout cas devrait être limitée ) à la sémantique d'entité, qui est globalement incompatible avec la notion même d'égalité:

    Chaque instance de la classe étant par nature unique, la chance de trouver une instance identique semble pour le moins compromise

    Dés lors, ou bien ta classe a sémantique de valeur, et, dans ce cas, tu devrais réellement essayer de travailler de préférence avec des références (éventuellement constantes), ou bien ta classe a bel et bien sémantique d'entité, et, dans ce cas, tu devrais plutôt mettre au point une fonction libre (ou un foncteur ) qui compare explicitement les données qui permettent de l'identifier de manière unique et non ambigüe.

    Mais, dans ce cas, l'adresse mémoire de l'instance est finalement une des plus cohérente à tester
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. problème de surcharge operateur '+' et '='
    Par Peter57 dans le forum Débuter
    Réponses: 46
    Dernier message: 29/05/2013, 16h23
  2. Problème de surcharge d'operateur <
    Par Shuret dans le forum C++Builder
    Réponses: 6
    Dernier message: 11/04/2008, 18h16
  3. Réponses: 1
    Dernier message: 21/08/2006, 19h17
  4. Problème de surcharge d'opérateurs
    Par Hell dans le forum C++
    Réponses: 17
    Dernier message: 17/01/2005, 16h01
  5. Réponses: 2
    Dernier message: 25/07/2004, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo