Instancier une classe de nom?

imaginer, j'ai un tas de C++ classes associées (toute l'extension de la même classe de base et de fournir le même constructeur) que j'ai déclaré dans une commune de fichier d'en-tête (que je comprend), et leur mise en œuvre dans certains autres fichiers (que j'ai compiler et lier de manière statique dans le cadre de la compilation de mon programme).

Je voudrais être en mesure d'instancier l'un d'eux en passant le nom, qui est un paramètre qui doit être passé à mon programme (soit en ligne de commande ou comme une compilation de macro).

La seule solution que je vois est d'utiliser une macro:

#ifndef CLASS_NAME
#define CLASS_NAME MyDefaultClassToUse
#endif

BaseClass* o = new CLASS_NAME(param1, param2, ..);

Est-il la seule approche intéressante?

InformationsquelleAutor puccio | 2009-07-08