Réferences croisées

cs_LiBe444 Messages postés 220 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 7 avril 2007 - 7 avril 2007 à 14:22
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 7 avril 2007 à 19:13
Bon si y'a quelqu'un qui sait comment écrire des réferences croisées en c++, répondez moi...

genre ça, mais qui compile :

class A ;
class B { A bou ; } ;
class A { B bou ; } ;

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 avril 2007 à 15:22
En C++ les objets ne sont pas de références, donc si tu déclares un objet A dans B, B contiendra un objet A qui sera instancié dans le constructeur de B. Jusque là tout va bien mais si tu mets aussi un objet de type B dans A, on a une dépendant circulaire, ce qui fait qu'en instanciant une objet A, on instancie un B, puis un autre A, puis un autre B. Evidemment on ne veut pas faire ca.
(Le problème n'existe pas en java car l'instanciation n'est pas automatique, il faut un new).
Pour résoudre ton problème, il faut qu'au moins un deux attributs bou soit un pointeur.
Par exemple:

B.h:
class A:
class B {A* bou;};
...

A.h:
#include "B.h"
class A {B bou;};

_____________________________________
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
7 avril 2007 à 19:13
A quoi correspond cette structure en uml ou autre ?
Je ne l'ai jamais utilisée.
Du point de vue d'une hiérarchie de classe, il y a toujours moyen de ne pas faire cela.
Puisque il y a double agrégation, n'y a t il pas héritage ?
Ou plus simplement A et B sont amies (friend) ?
0
Rejoignez-nous