Agregation bidirectionnelle

cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007 - 2 avril 2005 à 15:45
cs_Tux Messages postés 6 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 3 avril 2005 - 3 avril 2005 à 12:14
Voila j'aurais voulu savori si quelqu'un sait faire une agregation bidirectionnelle

en fait le soucis c'est au niveau des includes

/***************classe A************/

"include "ClasseB.h"

classe A

{

public:

A() { unB = new B(this); }

private:

B * unB;

}



/**************classe B*************/

#include "ClasseA.h"

classe B

{

B(A * a) { unA = A; }

private:

A * unA;

}



/********Erreur compil : aucun constructeur avec parametre pour B************/



En esperant que quelqu'un me compennes...

5 réponses

steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
2 avril 2005 à 18:13
/***************classe A************/



class B; // déclaration anticipée, tu dis au compilo que B existe



classe A

{

public:

A() : unB(
new B(this))
{}

private:

B * unB;

}



/**************classe B*************/

#include "ClasseA.h"

classe B

{

B( const A * a = 0) : unA(a) {}

private:

A * unA;

}
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
2 avril 2005 à 18:17
Définie A apres la déclaration de B.
0
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007
2 avril 2005 à 19:25
Ouais j'ai deja essayer ca



Mais il me dit que ma classe ne contient pas de constructeur avec un parametre



Merci quand meme
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
3 avril 2005 à 09:51
C'est le second message qu'il faut lire, dans le premier j'ai oublié de
définir A apres la déclaration complète de B, ca marche. Tu comprends à
quoi sert la déclaration class B; ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tux Messages postés 6 Date d'inscription samedi 4 mai 2002 Statut Membre Dernière intervention 3 avril 2005
3 avril 2005 à 12:14
dans la classe A tu inclus la classe B et dans la B tu inclus A.

Tu fais alors une boucle A -> B -> A ->B ......



essai de faire comme sa:




"include "ClasseB.h"

classe A

{

public:

A() { unB = new B(this); }

private:

B * unB;

};



/**************classe B*************/
class A;

classe B

{

B(A * a) { unA = A; }

private:

A * unA;

};



et oublies pas les ; à la fin des classes.


_ _
0
Rejoignez-nous