Classes imbriquées [résolu]

Classes imbriquées [résolu] - C++ - Programmation

Marsh Posté le 11-10-2006 à 00:24:44    

voila mon problème : je veux définir deux classes dont chacune a un de ses attibuts qui est du type de l'autre :
 

Code :
  1. class A
  2. {
  3. public:
  4.    B* b;
  5. }
  6. class B
  7. {
  8. public:
  9.    A* a;
  10. }

Et évidemment ca plante à la compilation comme il ne connait pas B à la ligne 4.
Ces déclarations sont dans mon class.h qui s'auto include mais ca ne change rien.
 
Comment dois-je faire????


Message édité par DarWog le 15-10-2006 à 12:07:18
Reply

Marsh Posté le 11-10-2006 à 00:24:44   

Reply

Marsh Posté le 11-10-2006 à 09:07:14    

La solution : les forward declaration :
 

Code :
  1. class B;
  2. class A
  3. {
  4. public:
  5.    B* b;
  6. }
  7. class B
  8. {
  9. public:
  10.    A* a;
  11. }


Message édité par Joel F le 11-10-2006 à 09:07:26
Reply

Marsh Posté le 11-10-2006 à 09:09:03    

Il faut déclarer préalablement l'une des deux classes sans la définir :

Code :
  1. class B;
  2. class A
  3. {
  4. public:
  5.    B* b;
  6. };
  7. class B
  8. {
  9. public:
  10.    A* a;
  11. };


 
PS: fais gaffe aux ';'
 
EDIT: grillaid, évidemment  :(


Message édité par franceso le 11-10-2006 à 09:09:48

---------------
TriScale innov
Reply

Marsh Posté le 11-10-2006 à 09:20:38    

Utiliser des fichiers d'entête séparés peut s'avérer judicieux également.

Reply

Marsh Posté le 11-10-2006 à 09:21:40    

D'ailleurs on utiliserait plutôt les termes Composition ou Agrégation que Imbrication pour des relations de ce genre entres classes.

Reply

Marsh Posté le 15-10-2006 à 11:57:28    

merci, ca marche nickel :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed