Bonjour,
J'ai un petit probleme pour lequel je n'arrive pas a trouver de solution elegante.
Dans un petit jeu que j'ecris pour m'amuser et apprendre, j'utilise courament une classe abstraite pour fixer mes interfaces que je dérive ensuite pour creer chaque objet avec un minimum d'effort. Jusque la tout va bien.
Le probleme c'est que je voudrais pourvoir creer chaque objet en utilisant juste un parametre. Bon comme ca doit pas etre vraiment clair voila un exemple concret. Imaginons que je veuille creer des spells. je cree une classe abstraite CSpell qui contient les element de base d'un spell et une fonction vituel "effet". Ensuite je derive une classe pour chaque spell que je veux rajouter par exemple CSpellSoinMineur.
Maintenant chaque objet de mon jeu peux etre appelé a creer un spell mais pour des raison de flexibilité j'aimerai pouvoir le faire a partir d'un indentifiant (basé sur un bon vieux #define SPELL_SOINMINEUR). du genre :
CSpell * Monspell = SpellManager.GetSpell (SPELL_SOINMINEUR)
Et la c'est le drame.
Jusque la, la seule solution que j'ai trouve c'est d'avoir une class "manager" qui a l'aide d'un bon vieux switch case me renvois me cree la bonne classe et me renvois le pointeur mais c'est pass vraiment elegant. Je voudrait donc savoir si il y a meilleur moyen. C'est peut etre trivial (je suis loin d'etre un pro) mais j'ai pas trouvé la solution. J'ai regarde tout ce qui etait Metaprogrammation et Typelist sans vraiment trouver de solution a mon probleme meme si c'est un peu l'idée du Resource manager du tutorial.
Merci d'avance.
Lyth
Partager