fonction virtuelle utilisant les méthodes des classes dérivées
Bonjour,
Mon problème est le suivant:
J'ai une classe virtuelle Objet dont dérivent différentes classes, par exemple Sphere, Cube...
Code:
1 2 3 4
|
class Objet;
class Sphere : public Objet
class Cube : public Objet |
J'ai une fonction virtuelle pure membre de Objet qui prend en argument un pointeur vers un objet:
Code:
virtual void Objet::fonction(Object* obj) = 0;
cette fonction est définie dans les classes dérivées
Code:
1 2 3 4 5 6
|
//void Sphere::fonction(Object* obj) = 0;
//void Cube::fonction(Object* obj) = 0;
//edit: erreur de recopie
void Sphere::fonction(Object* obj);
void Cube::fonction(Object* obj); |
Cette fonction utilise des méthodes définies uniquement dans les classes dérivées.
Bien entendu le compilateur râle: 'class Objet' has no member named 'toto'
puisque toto n'est défini que dans les classes dérivées et pas dans la classe mère.
Comment contourner ce problème? A part en faisant en sorte que toutes les fonctions soient définies dans la classe mère (vituellement bien sûr!)
Merci d'avance pour votre aide