Ich habe folgendes Problem, welches ich nicht weiss wie elegant zu lösen
ist.
In meinem Programm exisitert eine Template Klasse, welche als int,
double oder bool instanziert wird. Wie ist es möglich, auf diese
verschiedenen Klassen zuzugreifen, ohne jeweils einen cast machen zu
müssen?
Als Beispiel folgender dummy code
1 | template<class T>
|
2 | class Item
|
3 | {
|
4 | T Data;
|
5 | public:
|
6 | Item() : Data( T() )
|
7 | {}
|
8 |
|
9 | void sync()
|
10 | {
|
11 | // sync algo
|
12 | }
|
13 | };
|
14 |
|
15 | int main (){
|
16 | Item<int> itemI;
|
17 | Item<double> itemD;
|
18 | Item<bool> itemB;
|
19 |
|
20 | std::vector< ?* > v;
|
21 | v.push_back(&itemI);
|
22 | v.push_back(&itemD);
|
23 | v.push_back(&itemB);
|
24 |
|
25 | v[0].sync();
|
26 | }
|
Meine Lösung bisher war immer eine abstrakte Klasse zu erzeugen, welche
diese Funktionen zur Verfügung stellt. Dann enthält der Vector eben
pointer dieser abstrakten Klasse. Dabei geht aber immer viel
Schreibarbeit einher und es müssen zwei Klassen von Hand gepflegt
werden.
Gibt es dazu eine Lösung in der C++ Sprachwelt?