Salut,
OpFactory* factory = dynamic_cast<OpFactory*>(OpFactory::instance());
En fait la hiérarchie des classes est la suivante :
- classe Singleton<T>
- classe Factory<Key, Object*> dérivée de Singleton < Factory<Key, Object*> >
La dérivation de Singleton permet d'utiliser instance() et de gérer l'instance unique de la classe Factory<Key, Object*> dans la classe Singleton.
La classe Factory<string,Operation*> gère la fabrication d'objets "Operation" par clonage. Tout cela fonctionne comme il se doit jusqu'ici :
- instanciation unique et facile de la Factory
- enregistrement et création transparente pour l'utilisateur d'objets "Operation" par la Factory
Seulement le problème est que je souhaiterai créer grâce à ce "framework" si j'ose l'appeler ainsi, des classes dérivées de "Operation". Disons "TailOperation" pour l'exemple.
Aussi, je dérive Factory<string, Operation*> en OpFactory qui a une méthode "createTailOperation" qui devrait dans l'esprit appeler la methode "create" de la classe de base pour cloner le prototype (enregistré au préalable) de TailOperation puis éventuellement effectuer quelques initialisations.
Or, si j'appelle "create" de Factory<string, Operation*> je me retrouve bien avec une instance de Opération. Pour manipuler les fonctions de la classe dérivée TailOperation je ne vois pas comment faire d'autre qu'un dynamic_cast ?
Bref, je m'y PERD !
Help please !
Partager