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 :

Imbrication de class


Sujet :

C++

  1. #1
    Membre chevronn� Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par d�faut Imbrication de class
    Voici mon petit pb : j'aimerai definir une class dans une autre.
    Facile si on met tout dans le .h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class A 
    {
        class B
        {
            int m_memb;
         public:
            B(int i) : m_memb(i) {}
        };
        B m_b;
    public:
        A() {}
    };
    Maintenant si on veut separrer les definitions :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A{
         class B;
    public:
         A();
    };
    class A::B {
         int m_memb;
    public:
         B(int i) : m_memb(i) {}
    };
    Sa marche tjrs mais si on rajoute le membre B m_b :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class A{
         class B;
         B m_b;
    public:
         A();
    };
    class A::B {
         int m_memb;
    public:
         B(int i) : m_memb(i) {}
    };
    Le compilo me dit que la class B est indefinis, mais cela fonctionne si je declare ce membre comme pointeur : B *m_b;

    J'aimerai savoir si je suis oblig� de le declarer en pointeur, ou d'ecrire la definitions de ma class B dans la class A.

    J'ai trouv� que tres peu d'info sur l'imbrication de class sur le net, merci de bien vouloir m'aider

  2. #2
    Membre �m�rite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    D�tails du profil
    Informations personnelles :
    �ge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par d�faut
    Bonjour,
    Essai comme �a
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class B; 
     
    class A{ 
         B m_b; 
    public: 
         A(); 
    }; 
    class A::B { 
         int m_memb; 
    public: 
         B(int i) : m_memb(i) {} 
    };

  3. #3
    Membre chevronn� Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par d�faut
    Merci mais sa ne marche pas :
    error C2039: 'B' : is not a member of 'A'

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Pas possible:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    class A{ 
         class B; 
         B m_b;
    tu utilise B qui est inconnu � cet endroit. Tu peux utiliser un pointeur, mais pas une instance. Ou bien il faut d�clarer B comme dans ton 1� exemple.
    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 
    { 
        class B 
        { 
            int m_memb; 
         public: 
            B(int i=0);
        }; 
        B m_b; 
    public: 
        A() {} 
    };
     
    A::B::B(int i) : m_memb(i) {}
    voir aussi:
    http://c.developpez.com/faq/cpp/?pag...erence_croisee

  5. #5
    Mod�rateur
    Avatar de bruno_pages
    Homme Profil pro
    ing�nieur informaticien � la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : ing�nieur informaticien � la retraite
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par d�faut
    je ne comprends pas trop ton probleme ... et les solutions proposees.

    si tu veux que B soit une sous classe de A, alors tu dois la d�finir dans A ... ou inventer une autre syntaxe et reecrire le compilateur !

    maintenant la vraie question est pourquoi, l'imbrication de B dans A est un moyen pas un but
    Bruno Pag�s, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non � jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Par d�faut
    Citation Envoy� par bruno_pages
    si tu veux que B soit une sous classe de A, alors tu dois la d�finir dans A
    En fait, on ne peut pas mettre une instance de B dans A car la taille d'un objet B est inconnue si B n'est que d�clar�e (pas d�finie).

    J'esp�re que cette pr�cision t'aura �clair�
    Kwakanar

Discussions similaires

  1. imbrication de classe et arraylist
    Par greg08 dans le forum Collection et Stream
    R�ponses: 15
    Dernier message: 10/11/2009, 20h55
  2. Imbrication de classe C++
    Par OXXYGENE dans le forum C++
    R�ponses: 2
    Dernier message: 28/04/2009, 02h30
  3. Imbrication de classes
    Par tedori dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 05/04/2009, 18h08
  4. probleme imbrication des classes
    Par touane dans le forum ActionScript 3
    R�ponses: 3
    Dernier message: 04/12/2007, 15h14
  5. [POO] Imbrication de classes
    Par warrios dans le forum Langage
    R�ponses: 1
    Dernier message: 07/09/2007, 00h11

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