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:
codice:
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;
};
se
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