Hello
Ma question porte sur le design de deux classes que nous appellerons Truc et TrucCollection.
Ce que je voudrais faire : TrucCollection conserve toujours la liste de toutes les instances des "Truc", sans que "l'utilisateur" n'est de méthode spécifique à appeller.
classe TrucCollection :
Code :
- class TrucCollection
- {
- public:
- static void addInstance(Truc *); // ajoute cette instance
- static void removeInstance(Truc *); // supprime cette instance
- private:
- static un_conteneur_STL<Truc *> liste;
- }
|
classe Truc :
Code :
- class Truc
- {
- public:
- Truc() { TrucCollection::addInstance(this); }
- ~Truc() { TrucCollection::removeInstance(this); }
- }
|
Jusque là, ça fonctionne. Maintenant je veux ajouter une méthode "mrproper()" à la classe TrucCollection qui supprime toutes les instances (en fin de programme par exemple). Le problème est le suivant :
Code :
- void mrproper()
- {
- for (...) // parcours de la liste
- delete element; // appel le destructeur, qui va le retirer de la liste qu'on est en train de parcourir !
- }
|
Retirer l'element d'une liste alors qu'on est en train de la parcourir, est-ce bien moral ? Est-ce mon design qui n'est pas correct ? Y a-t-il d'autres solutions ?
Merci d'avance pour vos conseils !