Références Croisées ?

Références Croisées ? - C++ - Programmation

Marsh Posté le 14-11-2005 à 16:55:53    

Bonjour dans le cadre d'un petit projet en C++ j'ai un soucis de références croisées :  
 
Une classe A (a.cpp, a.h)
Une classe B (b.cpp, b.h)
 
Mon problème est que A possède un B comme attribut et B possède un A comme attribut.
 
Comment organiser mes .h proprement pour que ça puisse compiler ?
 
Merci d'avance !!!

Reply

Marsh Posté le 14-11-2005 à 16:55:53   

Reply

Marsh Posté le 14-11-2005 à 17:23:06    

bin ca peut pas, si A contient B et B contient A alors t'as des objets de taille infini
 
Sinon, c'est c'est des references ou des pointeurs, alors utilise la forward declaration

Reply

Marsh Posté le 14-11-2005 à 19:30:17    

je me disais bien que ça sentait mauvais... j'espérais une manière élégante de passer outre...

Reply

Marsh Posté le 14-11-2005 à 19:32:02    

la forward declaration est elegante et permet aussi de reduire les dependances entre fichier

Reply

Marsh Posté le 14-11-2005 à 19:34:59    

Merci ! Tu pourrais me donner un exemple "d'école" de forward déclaration ? parceque là, le nom me dit rien ...

Reply

Marsh Posté le 14-11-2005 à 19:45:27    

ah bin c'est tout con

Code :
  1. class prout;
  2. class A
  3. {
  4. prout * machin;
  5. }


 
ca sert juste a dire "y'a un truc qui s'appelle prout et qui est une classe"
 
si dans un H tu utilises juste un pointeur/reference sur un type, alors au lieu de faire un include tu peux te contenter de faire une forward declaration. Ca limite bien les dependances
 
maintenant pour utiliser une methode de prout (ou une var membre) alors le compilo aura besoin de la definition de prout, d'ou include

Reply

Marsh Posté le 14-11-2005 à 19:48:22    

et comme les include sont fait dans le .cpp dans ce cas ça doit marcher !
 
Merci !!!!

Reply

Marsh Posté le 14-11-2005 à 19:50:03    

Kyle_Katarn a écrit :

et comme les include sont fait dans le .cpp dans ce cas ça doit marcher !


 
vala [:god]
 

Reply

Marsh Posté le 14-11-2005 à 21:56:14    

sinon il y a aussi les directives de compilation... moi je préfère cette méthode la, mais ça c'est question de gout

Reply

Marsh Posté le 14-11-2005 à 21:59:16    

[:pingouino]

Reply

Marsh Posté le 14-11-2005 à 21:59:16   

Reply

Marsh Posté le 14-11-2005 à 22:31:02    

moi23372 a écrit :

sinon il y a aussi les directives de compilation... moi je préfère cette méthode la, mais ça c'est question de gout


putain, mais jamais t'arrètes de dire des conneries toi ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-11-2005 à 22:33:58    

Argh

Reply

Sujets relatifs:

Leave a Replay

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