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

Langage C++ Discussion :

Attribut polymorphe et héritage


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut Attribut polymorphe et héritage
    Salut à tous !

    J'ai une question qui me turlupine que voici. Le code simplifié de ma situation est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class A {};
     
    class B
    {
      A aA;
    };
     
    class C: public A {};
     
    class D: public B
    {
      //J'aimerais ici faire en sorte que l'attribut aA soit de type C.
    };
    Comment faire dans le constructeur de D pour que l'attribut aA soit instancié comme étant de type C ? Au moment de construire un objet de type D le constructeur de la classe mère B est appelé et aA est directement instancié comme étant un A. J'ai l'impression que c'est excessivement simple mais je ne trouve pas de solution.

    Merci d'avance !

    ++

  2. #2
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Par défaut
    Bonsoir,

    Pointeur sur classe A, sans quoi tu n'as pas de polymorphisme mais des copies.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class B
    {
      A* aA;
    };
    Sinon, tu passes par le constructeur de copie de A.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut
    Merci bien, je pensais trouver une solution sans pointeur (je n'ai rien contre les pointeurs ^^) mais apparemment c'est effectivement problématique !

    ++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    C'est forcément un problème de pointeur (ou référence), comme tout problème lié au typage dynamique.
    Le polymorphisme est construit sur cette base là.
    J'ai donc bine peur que tu n'aies pas le choix, mais c'est un choix qui n'est en aucun cas une restriction.
    Enfin, moi je le vois comme ca

Discussions similaires

  1. Attributs "private" et Héritage
    Par L'aigle de Carthage dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 11/11/2012, 17h24
  2. [POO] Héritage et visibilité des attributs : pas de "protected" en JS ?
    Par Hervé Saladin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/11/2007, 15h44
  3. héritage attributs privés
    Par charlene44 dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 16/05/2007, 00h33
  4. [UML] Gestion boite mail : héritage et attributs
    Par RaelRiaK dans le forum UML
    Réponses: 2
    Dernier message: 10/01/2007, 09h37
  5. Héritage => table sans attribut !?
    Par GnouDream dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/07/2006, 15h25

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