class Child_1
{
public:
Child_1(int a, int c, int e)
{
}
};
class Child_2
{
public:
Child_2(int b, int d)
{
}
};
class Child_3
{
public:
Child_3(int c, int d, int e)
{
}
};
template<typename T>
class Parent
{
public:
int A, B, C, D, E;
T Child;
Parent(int a, int b, int c, int d, int e) :
A(a), B(b), C(c), D(d), E(e),
Child(???)
{
}
};
class ParentDerived : public Parent<Child_1>
{
};
Mam sytuację jak powyżej. Klasa tworzy pole z szablonu na podstawie innej klasy (lista możliwości jest zamknięta i odgórnie znana). Wszystkie parametry potrzebne do inicjalizacji tego szablonowego pola pochodzą z innych pól klasy Parent
(więc nie ma sensu podawać ich z zewnątrz przy tworzeniu ParentDerived
), ale każda z klas możliwych do użycia w szablonie potrzebuje trochę innych parametrów (jak widać w przykładzie powyżej). Jak to najlepiej rozwiązać? Ja póki co zrobiłem to tak, że każda z tych klas Child
ma taki sam konstruktor i po prostu przyjmuje wszystkie 5 parametrów, ale używa tylko tych, które faktycznie są jej potrzebne. Czy takie rozwiązanie jest ok? Można (powinno się?) to zrobić inaczej?