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 :

surcharge operateur avec "const"


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Par défaut surcharge operateur avec "const"
    Bonjour à tous,

    J'ai deux classes : CCoord et CVecteur
    Mon compilateur me répond:
    ...In member function ‘CCoord& CCoord::operator+=(const CVecteur&)’:
    ...|18|erreur: passing ‘const CVecteur’ as ‘this’ argument of ‘int CVecteur:()’ discards qualifiers|
    ...|19|erreur: passing ‘const CVecteur’ as ‘this’ argument of ‘int CVecteur::y()’ discards qualifiers|
    ||=== Build finished: 2 errors, 0 warnings ===|
    si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CCoord& CCoord::operator+=(const CVecteur& vect)
    {
        m_col=+vect.x();
        m_rang+=vect.y();
        return *this;
    }
    Tout ce passe bien dès l'instant que supprime "const".
    Je ne comprend pas ce qui peut le déranger. "const" a-t-il une signification particulière dans ce cas?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    il faut que les méthodes x() et y() soient const

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Par défaut
    Ainsi "const" doit s'appliquer à l'objet aussi bien qu'à ses composants?
    Pourtant ma fonction ne tente pas de modifier l'objet vect.

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Par défaut
    je viens d'essayer en modifiant mes fonctions comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int x(){return m_x;}
    et j'ai toujours le même message d'erreur.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Par défaut
    Euh désolé pour la bourde.
    En écrivant:
    int x() const etc...
    Ca marche très bien.

    Je reste toutefois sceptique quand à cette exigence du c++. Pourquoi la fonction que j'utilise doit être déclarée comme tel?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Avril 2008
    Messages : 20
    Par défaut
    Normalement un objet const ne peux appeler que des méthodes const, c'est à dire les méthodes qui ne modifient pas les données membres.
    Vu que vect est const, il ne peut pas appeler x() et y() si elles ne le sont pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Surcharge]Operateur<< avec une classe maison
    Par KeNnEdY dans le forum C++
    Réponses: 6
    Dernier message: 14/09/2005, 15h51

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