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 :

typedef struct dans une liste d'initialisations


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 33
    Points
    33
    Par défaut typedef struct dans une liste d'initialisations
    Voilà ce que j'essaies de faire :

    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 MaClasse
    {
        private:
            typedef struct
            {
                AutreClasse objet;
            } MaStruct;
    
        public:
            MaClasse();
    }
    
    MaClasse::MaClasse() : MaStruct.objet(param)
    {}
    Initialiser objet contenu dans MaStruct dans la liste d'initialisation du constructeur de MaClasse...

  2. #2
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Avec ton code, tu essaye d'initialisé une variable qui n'est pas créer. Sois tu la met static, sois tu l'initialises dans le constructeur de ta struct.
    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
    16
    class MaClasse
    {
        private:
            typedef struct MaStruct
            {
                AutreClasse objet;
                MaStruct(AutreClasse &ac)
                   :objet(ac)
                {}
            } maStruct;
        public:
            MaClasse(AutreClasse &ac);
    }
    
    MaClasse::MaClasse(AutreClasse &ac) :maStruct(ac)
    {}
    Edit : le code que j'ai donné ne compile pas mais la réponse est la

    Edit 2:
    Étant un peu fatigué, j'ai mis du temps à répondre ^^

    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
    16
    17
    18
    19
    20
    21
    22
     
    class MaClasse
    {
        private:
            typedef struct MaStruct
            {
                AutreClasse objet;
                MaStruct()
                {}
                MaStruct(AutreClasse &ac)
                   :objet(ac)
                {}
            };
            MaStruct maStruct;
        public:
            MaClasse(AutreClasse &ac);
    };
     
    MaClasse::MaClasse(AutreClasse &actmp)
    {
        maStruct.objet = actmp;
    }
    Voir une autre version plus "dynamique" :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    class MaClasse
    {
        private:
            typedef struct MaStruct
            {
                AutreClasse objet;
                MaStruct()
                {}
                MaStruct(AutreClasse &ac)
                   :objet(ac)
                {}
            };
            MaStruct *maStruct;
        public:
            MaClasse(AutreClasse &ac);
            ~MaClasse()
            {
                delete maStruct;
            }
    };
     
    MaClasse::MaClasse(AutreClasse &actmp) : maStruct(new MaStruct(actmp))
    {}
    Si tu connais les auto_ptr ou shared_ptr utilise les à la place du pointeur
    Homer J. Simpson


  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    "typedef struct" ! Je crois que j'ai un peu mélangé C et C++.

  4. #4
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Un typedef comme ça ne te sert pas à grand chose en C++. Tu peux imbriquer les déclarations de classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class A
    {
        class B
        {
        };
     
        struct C
        {
        };
     
        B b;
        C c;
    };
    Homer J. Simpson


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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/12/2012, 19h26
  2. Réponses: 7
    Dernier message: 24/11/2011, 10h41
  3. Réponses: 3
    Dernier message: 22/03/2011, 12h56
  4. Réponses: 2
    Dernier message: 17/08/2003, 20h07
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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