• # ClasseMere est inutilisable.

    Posté par . En réponse au message Problème d'héritage. Évalué à 10. Dernière modification le 11 août 2013 à 12:10.

    class ClasseMere {
    /* ... */
     ClasseMere() {}
    /* ... */
     AutreClasse &m_attribut;
    };

    En C++, les références sont immuables et doivent donc être obligatoirement initialisées. Vu que ton constructeur n'initialise rien, il est invalide. Ta classe ne peut donc pas être construite, donc elle est inutilisable.

    Vu que les héritiers ont aussi besoin de construire la classe de base, les héritiers sont inutilisables aussi.

    Si je comprends bien l'erreur que m'affiche QtCreator, le constructeur bogue parce que ClasseFille n'a pas l'attribut m_attribut.

    Non, l'erreur c'est que ClasseFille n'a pas de champ m_attribut. Un champ et un attribut (on parle plutôt de membre en C++), ce n'est pas la même chose.

    ClasseFille n'a qu'un seul champ: ClasseMere (qui elle, contient un champ m_attribut). Si ClasseFille avait aussi un attribut m_coucou, alors ClasseFille aurai deux champs: ClasseMere et m_coucou.

    Un constructeur de classe ne peut initialiser que ses propres champs. Donc ClasseMere doit initialiser m_attribut et ClasseFille doit initialiser ClasseMere, en lui passant la référence en paramètre, par exemple.