Originariamente inviato da giuseppe500
mi chiedevo se fosse possibile incapsulare tutto in una classe e restituire la classe????
Dipende da che grado di compromesso sei disposto a scendere.
Fosse per me deriverei le due classi da una intefaccia comune per poi fare un downcast sfruttando la RTTI del linguaggio o un cast controllato in base a un enumerato.
In ambedue i casi non te la cavi senza un puntatore allocato dinamicamente.

so che è una sciocchezza ma come fanno ad esempio i function object ad incapsulare la funzione?
Il come non è semplice da spiegare, specie se parliamo di std::tr1::function. In ogni caso pure con loro il problema permane.

e se volessi passare solo pippo o solo pluto sarebbe possibile?
come?
grazie.
Si. Come? Indicando alla funzione che tipo dev'essere usato per istanziare MyClass.
codice:
template< class T  >
MyClass<T> getTemplate(xxx)
{
    return MyClass<T>;
}


m_pApi->getTemplate<Pippo>(xxx);

m_pApi->getTemplate<Pluto>(xxx);