Question con

Résolu
cs_coyote Messages postés 45 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 28 novembre 2008 - 17 oct. 2004 à 14:28
cs_coyote Messages postés 45 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 28 novembre 2008 - 11 nov. 2004 à 02:19
J'ai 2 classes: ClasseA et ClasseB
ClasseA possede une variable de type ClasseB, et ClasseB possede une variable de type ClasseA.

Comment faire pour que le compilateur ne me fasse pas d'erreur a la compilation?

//ClasseA.h
#if !defined CLASSEB
#define CLASSEB
#include "ClasseB.h"
#endif

class ClassA
{
ClasseB* B;
public:
ClassA();
virtual ~ClassA();
};

//ClasseB.h
#if !defined CLASSEA
#define CLASSEA
#include "ClasseA.h"
#endif

class ClassB
{
ClasseA* A;
public:
ClassB();
virtual ~ClassB();
};

merci ...

4 réponses

plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
17 oct. 2004 à 15:09
//ClasseA.h
class ClasseB;

class ClassA
{
ClasseB* B;
public:
ClassA();
virtual ~ClassA();
};

-----------------------------------

//ClasseB.h
class ClasseA;

class ClassB
{
ClasseA* A;
public:
ClassB();
virtual ~ClassB();
};

c'est bon comme ça ?
3
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
17 oct. 2004 à 22:11
Oui, en fait c'est tout con come le montre plus_plus_fab, suffit de rajouter les lignes : class ClasseA et class ClasseB respectivement donc les fichiers classeB.h et classeA.h avant la définition de la classe..c tout :-) a++

Genda67, à votre service !
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 oct. 2004 à 12:22
on appel ca declaration anticipée, on peut déclarer un pointeur
0
cs_coyote Messages postés 45 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 28 novembre 2008
11 nov. 2004 à 02:19
Juste pour revenir sur cette question.
La reponse de plus_plus_fab fonctionne.
Mais c'est illogique puisque dans ClassA, j'importe le header de la classB (#include "ClasseB.h"). Donc le compilateur devrait connaitre la definiton de la classe B avant d'arriver sur ClasseB* B;
0
Rejoignez-nous