Partage
  • Partager sur Facebook
  • Partager sur Twitter

Question sur les classes...

juste un petit truc pas clair

Sujet résolu
    9 octobre 2007 à 23:47:50

    Alors voilà, j'ai lu les cours de m@teo et j'avais très bien compris jusqu'à ce que d'un seul coup, un truc me paraissent bizarre et là subitement, c'est plus clair du tout!!!

    Dans son cours, dans la partie où il explique les classes (partie 1/2) il écrit :

    Citation : Cours de m@teo


    On ne peut pas modifier directement la vie de la cible en faisant cible.m_vie car la cible est un AUTRE objet (même s'il est aussi issu de la classe Personnage). On n'a le droit d'accéder qu'aux éléments publics de cet autre objet, donc à ses méthodes.



    En parlant de ce code là :

    1. void Personnage::attaquer(Personnage &cible)
    2. {
    3.     cible.recevoirDegats(m_degatsArme); // On inflige à la cible les dégâts que causent notre arme
    4. }


    et dans la suite du cours, 2 chapitres plus loin, pendant l'explication des constructeurs de copie, il explique :

    Citation : cours de m@teo


    sauf qu'il y a une exception ici : on est dans une méthode de la classe Personnage, et on a le droit d'accéder à tous les éléments (même privés) d'un autre Personnage.



    C'était pas déjà le cas avec le code précédent... cible issu de la classe Personnage, et on était dans une méthode de la classe Personnage et pourtant, on a pas accés aux attributs privés de cible parce que c'est un autre objet malgrès le fait qu'il est issus de la même classe!
    Y'a une contradiction (et dans ce cas quelle explication est la bonne) ou est-ce que c'est moi qui mélange 2 trucs et qui comprend rien?
    • Partager sur Facebook
    • Partager sur Twitter
      9 octobre 2007 à 23:53:32

      il y a quand même une subtil différence. La deuxième explication est la bonne (accès aux variables)
      Dans le constructeur de copie, on copie, mais que la partie "Personnage" de la variable (si c'est une classe dérivée par ex).
      Alors que dans "attaquer", la cible peut avoir une armure et même être invincible temporairement sans compter sur un % de réussite de l'attaque qui changent en fonction du type de Personnage (si c'est un Guerrier, un magicien,...), il est préférable d'appeler une méthode pour pouvoir faire abstraction du type de personnage et apprécier à sa juste valeur le polymorphisme.
      • Partager sur Facebook
      • Partager sur Twitter
        10 octobre 2007 à 0:19:42

        Merci pour cette réponse très claire! :)
        • Partager sur Facebook
        • Partager sur Twitter

        Question sur les classes...

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown