OVH Cloud OVH Cloud

Héritage et composition

3 réponses
Avatar
Ramillien Régis
bonjour à tous,

J'ai un peu honte de poser cette question, la réponse doit être super simple
j'imagine mais...
mon problème est le suivant :
- J'ai une classe B qui hérite d'une classe A.
- La classe A possède un attribut de type B.

Quand je compile, le compilo (.net) me dit : "'A' : classe de base non
définie"
Quelqu'un a t'il une idée de comment faire pour pouvoir quand même compiler
?

Merci

Rage

3 réponses

Avatar
Benoit Rousseau
Ramillien Régis wrote:
bonjour à tous,

J'ai un peu honte de poser cette question, la réponse doit être super simple
j'imagine mais...
mon problème est le suivant :
- J'ai une classe B qui hérite d'une classe A.
- La classe A possède un attribut de type B.

Quand je compile, le compilo (.net) me dit : "'A' : classe de base non
définie"
Quelqu'un a t'il une idée de comment faire pour pouvoir quand même compiler
?

Merci

Rage


Nous donner plus d'informations (une partie de ton code) aiderait pas mal.


tu dois vouloir faire quelquechose du genre

class B; //pre-définition de B

class A {
public:
B* b; //Tu ne peux avoir qu'un pointeur parceque B n'est pas encore
// déclaré
};

class B : public A {};


--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

Avatar
Jean-Marc Molina
Je trouve pas ça très logique d'avoir un pointeur vers une classe fille dans
une classe mère. Normalement ce sont les filles qui connaissent leur mère et
non pas l'inverse.

Dans quel contexte as-tu besoin de ça ?

JM

--
Europe > France > Lyon
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Avatar
Benoit Rousseau
Jean-Marc Molina wrote:
Je trouve pas ça très logique d'avoir un pointeur vers une classe fille dans
une classe mère. Normalement ce sont les filles qui connaissent leur mère et
non pas l'inverse.

Dans quel contexte as-tu besoin de ça ?

JM

Dans le contexte des classes A et B :-)


Moi j'en ai eu besoin (sans réfléchir au design, je l'avoue) dans le cas
d'un composite pour lequel j'enregistre la classe qui compose :

class B;

class A {
A( B* m ) : mother( m ) {}
B* mother;
};

class B {
list< A* > operations;
};

--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/