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 d'un membre donné


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 30
    Points
    30
    Par défaut Initialisation d'un membre donné
    Bonjour à tous,

    J'ai essayé de compiler le code suivant avec Mingw :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "class_b.h"
     
    class A
    {
    protected:
        B b(5);
    public:
        A();
        ~A();
    }
    Le constructeur de B admet un int en paramètre.

    Il pète une erreur pour B b(5); -> expected `;' before '(' token

    Dans mon cas je ne peux pas déclarer B* b; puis faire b = new B(5) dans le constructeur de A.
    Je n'ai pas non plus le droit de modifier le code de B.


    Comment puis-je faire svp ?

    Merci

  2. #2
    Membre confirmé
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Points : 533
    Points
    533
    Par défaut
    Le problème ici est que tu n'as pas le droit d'initialiser une variable dans la déclaration de la classe, il faut le faire dans le constructeur, pour cela deux façons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class A
    {
        B b;
    }
     
    A::A():b(5)
    {}
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class A
    {
        B b;
    }
     
    A::A()
    {
        b = 5;
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Les constructeur des membre d'une classe doivent être appellés dans la liste d'initialisation de la classe et non pas lors de leur déclaration(si rien n'est spécifié le constructeur par défaut sera appelé). Donc dans ton cas :
    Si tu ne connais pas encore les liste d'initialisation, fais une petite recherche, tu trouveras toutes les informations que tu veux

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Woaaa !
    Merci à tous ...

    Je serai moins bête ce soir ! Je ne connaissais pas les liste d'initialisation !


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/08/2007, 20h50
  2. Réponses: 0
    Dernier message: 25/07/2007, 14h47
  3. Réponses: 8
    Dernier message: 21/06/2007, 13h49
  4. Réponses: 3
    Dernier message: 06/01/2007, 14h46
  5. Initialiser une référence membre d'une classe
    Par NicolasJolet dans le forum C++
    Réponses: 2
    Dernier message: 18/03/2006, 12h14

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