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 :

Initialisation const dans une classe fille


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Initialisation const dans une classe fille
    Bonjour j'ai une classe A avec un champ const std::string str;
    Je veux l'initialiser dans une classe fille et quand je le mets dans la liste d'init de mon constructeur fille il me dit que str n'appartient pas a la classe fille.

    J'espere avoir ete assez clair merci de votre aide!

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui... et c'est suffisemment clair je pense... la liste d'initialisation d'une classe X ne concerne que les membres de cette classe X (et ses classes parentes).

    Il te faut utiliser le constructeur de la classe 'parente' pour ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class A
    {
        const std::string   m_str;
     
    public:
        A(const std::string& szStr) : m_str(szStr), ... autres membres de A ... {}
        ...
    };
     
    class B : public A
    {
    public:
        B(const std::string& szStr) : A(szStr), ... autres membres de B ... {}
    };

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Citation Envoyé par nicroman Voir le message
    (et ses classes parentes).
    Tu voulais dire l'inverse non : et non celles de ses classes parentes ?

    MAT.

  4. #4
    screetch
    Invité(e)
    Par défaut
    non il voulait dire que tu initialises tes propres membres ET tes classes parentes, mais pas tes propres membres ET les membres de tes classes parentes

    donc on ne fait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class B : public A
    {
      B() : b(0), a(0) {}
    };
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class B : public A
    {
      B() : b(0), A(0) {} //A initialisera son membre a lui même
    };

Discussions similaires

  1. problème de const dans une classe
    Par dronix dans le forum C#
    Réponses: 8
    Dernier message: 26/03/2010, 10h49
  2. Réponses: 1
    Dernier message: 06/11/2009, 00h20
  3. Event dans une classe fille de wxMenuBar
    Par elraton dans le forum wxWidgets
    Réponses: 6
    Dernier message: 28/08/2008, 10h41
  4. Réponses: 4
    Dernier message: 16/03/2008, 18h06
  5. static const dans une classe ?
    Par hpfx dans le forum C++
    Réponses: 7
    Dernier message: 15/08/2007, 15h06

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