2012-03-02 14 views
5

Ho una classe chiamata AbstractRManagers che vorrei ereditare da una singleton modello di classe Singleton ma l'abstractRmanager che deve essere una classe template mi sono imbattuto in strani codici di errore che non servono a nulla, Ive ha provato a cercarlo ma a no fortuna.Che cosa significa "modello di classe non specializzato non può essere utilizzato come argomento modello" significa?

template <class Type> 
class AbstractRManagers : public Singleton<AbstractRManagers> 
{ 

errore C3203: 'AbstractRManagers': modello di classe non specializzato non può essere usato come un argomento di un template per il parametro template 'Tipo', previsto un tipo reale

+0

"abstract ... manager ... singleton ..." I miei occhi! Probabilmente vorrai 'classe AbstractRManagers: pubblico Singleton >'. –

+0

Che cos'hai? "astratto ... manager ... singleton ..." I miei occhi! –

+0

Sembra uno scherzo ricorrente nella sala C++. –

risposta

10

AbstractRManagers nomi un modello, che non è un tipo - deve avere un parametro modello dare per diventare un tipo. Almeno se ho capito quello che vuoi, probabilmente avete bisogno di qualcosa di simile a:

template <class Type> 
class AbstractRManagers : public Singleton<AbstractRManagers<Type> > 

... che comincia a guardare con sospetto CRTP-like.

Quindi la nota obbligatoria: è molto probabile che tu non abbia davvero bisogno o desideri un singleton qui (o quasi ovunque).

4

Dovrebbe essere public Singleton<AbstractRManagers<Type> > come AbstractRManagers è un modello che è necessario fornire al tipo concreto per creare un'istanza.

Problemi correlati