Ho una classe contenitore, che chiameremopuntatori come parametri del modello?
template <class T> CVector { ... }
voglio fare qualcosa di diverso con questa classe quando T è un tipo di puntatore, ad esempio, qualcosa sulla falsariga di:
template <class T*> CVector< SomeWrapperClass<T> >;
dove SomeWrapperClass si aspetta il tipo di oggetto puntato come suo parametro. Sfortunatamente, questa sintassi non funziona e con alcuni scavi non ho trovato un buon modo per far funzionare qualcosa del genere.
Perché farlo in questo modo? Voglio cambiare, in un'applicazione molto grande, come funzionano alcuni dei nostri contenitori quando il tipo su cui si specializzano è un puntatore rispetto a un puntatore e, idealmente, mi piacerebbe farlo senza modificare i ~ 1000 punti nel codice in cui ci sono cose come CVector<Object*>
vs CVector<int>
o alcuni di questi - e giocare con specializzazioni parziali sembra essere la strada da percorrere.
Sono in pausa qui?
Penso che sia necessario più contesto per quello che stai facendo. Quindi, a cosa serve? Cos'è la classe wrapper "Some"? E qual è 'CVector'? Non un 'std :: vector' reinventato, spero. – GManNickG
No, non lo è - sto usando intenzionalmente nomi astratti per le classi - ma fondamentalmente la classe wrapper accetta come parametro un tipo non puntatore. CVector può prendere qualsiasi tipo di tipo - voglio solo usare la classe wrapper quando al vettore viene dato un tipo di puntatore. –
@D Garcia: Non capisco cosa vuoi, esattamente. Se T è un puntatore, cosa dovrebbe fare CVector? – rlbond