PDA

Visualizza la versione completa : [C++] Template e return type


giuseppe500
24-07-2011, 12:57
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:


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

Loading