Hallo,
Ik zou het volgende willen doen in C++:
Dan wil ik ergens het volgende doen:
En afhankelijk van het subtype van GenericFactory worden dan andere Something objecten gecreëerd.
Helaas is dit een fictief voorbeeld, aangezien templating en inheritance niet zo goed samengaan...
Ik vroeg me echter af hoe je iets soortgelijks best kan doen?
Ik wil dus eigenlijk een interface over een factory die templated objecten kan aanleveren.
In mijn situatie kan ik hier nu wel omheen werken, maar hoe kun je dit elegant oplossen?
Voor de duidelijkheid, dezelfde situatie zonder templating zou er als volgt uitzien:
Ik zou het volgende willen doen in C++:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| class GenericFactory { public: template <typename T> virtual Something<T>* createInstance() = 0; } class SpecificFactory : public GenericFactory { public: template <typename T> Something<T>* createInstance(); } |
Dan wil ik ergens het volgende doen:
code:
1
2
3
| void method(GenericFactory *fac) { Something<EenKlasse> *ptr = fac->createInstance<EenKlasse>(); } |
En afhankelijk van het subtype van GenericFactory worden dan andere Something objecten gecreëerd.
Helaas is dit een fictief voorbeeld, aangezien templating en inheritance niet zo goed samengaan...
Ik vroeg me echter af hoe je iets soortgelijks best kan doen?
Ik wil dus eigenlijk een interface over een factory die templated objecten kan aanleveren.
In mijn situatie kan ik hier nu wel omheen werken, maar hoe kun je dit elegant oplossen?
Voor de duidelijkheid, dezelfde situatie zonder templating zou er als volgt uitzien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| class GenericFactory { public: virtual Something *createInstance() = 0; } class SpecificFactory { public: Something *createInstance(); } void method(GenericFactory *fac) { Something *ptr = fac->createInstance(); // Hier is GenericFactory bvb. eigenlijk een SpecificFactory, // en levert deze methode dan ook een Specific implementatie van Something. } |