J'ai une classe de modèle, C_Foo <T>, qui est spécialisée de plusieurs façons.Ajout de classes de modèle C++ à une liste
struct Bar_Base { ... };
struct Bar_1 : public Bar_Base { ... };
struct Bar_2 : public Bar_Base { ... };
struct Bar_3 : public Bar_Base { ... };
class C_Foo<T> { ... };
class C_Foo_1 : public C_Foo<Bar_1> { ... };
class C_Foo_2 : public C_Foo<Bar_2> { ... };
class C_Foo_3 : public C_Foo<Bar_3> { ... };
Et instanciations comme suit:
C_Foo_1 foo1;
C_Foo_2 foo2;
C_Foo_3 foo3;
J'ai un ensemble d'opérations communes, qui sont tous définis sur C_Foo, que je veux effectuer sur foo1, foo2 et foo3. Je l'ai essayé ce qui suit:
vector<C_Foo *> v;
v.push_back(&foo1);
v.push_back(&foo2);
v.push_back(&foo3);
mais je reçois des erreurs de compilation, probablement parce que le compilateur ne sait pas comment passer d'un C_Foo_1 à un C_Foo.
Est-il possible de faire quelque chose comme ça? Je veux être en mesure de boucle à travers foo1 .. Foon et effectuer les mêmes opérations sur tous, sans avoir à copier et coller le code passe-partout comme ceci:
foo1.do_stuff();
foo2.do_stuff();
foo3.do_stuff();
Merci pour votre aide.