Bonjour,
Voila mon souci :
J'ai une classe cBoite, une classe cCube, et d'autres qui derivent toutes de la classe cObjet.
J'ai une classe cConteneur qui derive elle aussi de cObjet.
La classe cConteneur a comme membre une liste des objets qu'elle contient :
Jusqu'ici tout va bien....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class cConteneur : public cObjet { public: std::list<cObjet*> m_listeObjets; public: void afficherObjets(); void trierObjets() ..... }
Seulement, certains de mes conteneurs (qui derivent de la classe cConteneur) ne sont prevus pour ne contenir que des cubes (par exemple)
Je souhaiterais donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class cConteneurCube : public cConteneur { ..... }
- que la liste d'objets devienne une liste de cubes : std::list<cCube*> m_listeObjets
- eviter de re-coder les méthodes "afficherObjets", "trierObjets".... qui parcourent la liste d'objets avec des itérateurs
Quelle serait la méthode la plus simple/la plus propre ?
Avec des templates ?
J'ai jamais codé de template, quels sont les pièges à eviter ?
Merci !
EDIT :
Pour preciser ma pensée, voila comment je vois les choses :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 La classe cConteneur contient par defaut des cObjet : class cConteneur<class C=cObjet> : public cObjet { public: std::list<C*> m_listeObjets; public: void afficherObjets(); void trierObjets() ..... }Mais je ne sais pas trop comment l'ecrire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 La classe cConteneurCube dérive de cConteneur mais contient des cCube : class cConteneurCube : public cConteneur<cCube> { ..... }
Partager