Bonjour,

Mon problème est le suivant:
J'ai une classe virtuelle Objet dont dérivent différentes classes, par exemple Sphere, Cube...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
virtual void Objet::fonction(Object* obj) = 0;
cette fonction est définie dans les classes dérivées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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