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