Taz a écrit :
fais une fonction static factory dans ta classe
class Foo
{
public:
static Foo *factory() { return new Foo; }
};
Foo (*f)() = &Foo::factory
|
En fait, c'est exactement ce que j'ai actuellement.
Mais ca m'oblige à rajouter une fonction statique factory() dans toutes les classes qui ont besoin d'être enregistrée. Et justement, c'est ce problème que je voudrai éviter.
En gros, j'ai ca :
Code :
- Class1::Class1() {
- return ;
- }
- Class1 * Class1::factory() {
- return new Class1();
- }
- void Class1::register() {
- Registry::add( Class1::CODE, Class1.factory() );
- }
- ...
- //Et ceci, pour N classes : Class1 à ClassN
|
Or, ces classes héritent toutes de la même classe MetaClasse.
Donc, ca m'embête d'avoir à réimplémenter ces 3 méthodes, dans les N classes, alors que seul le constructeur est vraiment utile.
J'aimerai bien factoriser ce code au niveau de la classe MetaClasse, mais sans template, car j'ai besoin d'avoir des pointeurs MetaClasse *, sans avoir à spécifier un template à chaque fois.
Donc, j'avais pensé à un pointeur de constructeur, ce qui m'aurai supprimé le besoin de la factory, ou un pointeur de classe, ce qui aurait eu le même effet.
Lelfe
Message édité par lelfe le 29-11-2004 à 18:17:26