ciao.
Ho due classi di configurazione : Pippo e Pluto.
Ho una calsse da configurare MyClass che accetta come parametro template Pippo o Pluto e prende i valori da una di queste e si configura.
per es semplificando:
secodice:class Pippo : public CimporterBase { public: Pippo(){ }; struct SubType{ static int n1; static int n2; }; }; e la classe da configurare: template <typename T> class MyClass : CimporterBaseT{ public: MyClass(){nValue = 2;}; typename T::SubType * ptr; };
MyClass<Pippo>
la classe da configurare(MyClass) avra una struttura
struct SubType{
static int n1;
static int n2;
};
mentre se utilizzero pluto avro un altra struttura.
Ho una funzione in un altra classe che agisce da factory e dovrebbe ritornare o una classe Pippo o Pluto o una MyClass configurata co pippo o pluto.
per fare questo l'unico modo che conosco è fare ereditare il template da una classe astratta non template.
1)Il problema è che quando assegno alla classe base senza template una classe ad es pippo o pluto e la ritorno perdo "il tipo" che mi servirebbe per configurare MyClass.
2)se configuro MyType all' interno della funzione con una classe Pippo o Pluto quando ritorno la classe base di MyClass perdo anche qui il tipo e non riesco a prendere la struttura SubType perchè nella classe CimporterBase non c'è, perchè la classe è generica

Rispondi quotando