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 :

Question sur les pointeurs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Par défaut Question sur les pointeurs
    Bonjour,

    J'essaye d'apprendre le C++, j'utilise Code block sous Linux.
    Je comprend bien le principe des pointeurs, par contre je ne comprend pas trop quand utiliser -> ou "." pour accéder aux membres d'une classe.

    Par exemple :

    Le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Personnage
    {
      (......)
      void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
      Arme *m_arme;
     
    };
    le .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
    {
        m_arme->changer(nomNouvelleArme, degatsNouvelleArme);
    }
    J'aurais plutôt pensé que dans ce cas il fallait utiliser *m_arme.changer() puisqu'il faut déréférencer le pointeur et pour ca il faut utiliser "*", sauf que ca ne compile pas...

    Est-ce que quelqu'un pourrais m'éclairer svp ?

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Par défaut
    C'est pareil je ne comprend pas pourquoi là on ne retourne pas *this alors que la fonction est censée retourner un Personnage*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Personnage* Personnage::getAdresse() const
    {
        return this;
    }
    Et ca non plus je ne comprend pas, la fonction doit retourner une adresse (Duree&) et on retourne *this.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Duree& Duree::operator+=(const Duree &duree2)
    {
        //Des calculs compliqués…
     
        return *this;
    }
    Là j'avoue je suis un peu paumé dans toutes ces syntaxes différentes....

  3. #3
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Si on met de coté le fait que les opérateurs -> et * peuvent être surchargés, on peut dire que:

    Si a est un pointeur, alors la notation a->f() est un shortcut pour (*a).f()

    Edit pour second post:
    this est déjà un pointeur, donc this est du type Personnage* (ou Personnage const*)

    *this dans return *this dereference this. Duree& n'est pas une adresse, mais un référence.

    * et & ont plusieurs significations.

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Par défaut
    D'accord d'accord...

    Tu viens de m'apprendre un truc avec le (*a).f() je ne savais pas du tout que c'était équivalent...je comprend mieux.

    Sinon pour le reste, je crois que j'avais pas bien capté la différence entre référence et pointeur
    Ca va un peu mieux

    Merci pour ton aide

Discussions similaires

  1. Question sur les pointeurs génériques
    Par mikedavem dans le forum C
    Réponses: 16
    Dernier message: 24/05/2006, 11h56
  2. question sur les pointeurs
    Par jd.baculard dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 02h30
  3. [Debutant] Nouvelle question sur les pointeurs
    Par etiennegaloup dans le forum Débuter
    Réponses: 3
    Dernier message: 11/01/2006, 09h55
  4. Question sur les pointeurs.
    Par Chrisemi dans le forum C++
    Réponses: 5
    Dernier message: 28/10/2005, 23h47
  5. questions sur les pointeurs
    Par Hyoga dans le forum C++
    Réponses: 17
    Dernier message: 08/01/2005, 23h25

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