2012-03-02 25 views
5

Tengo una clase llamada AbstractRManagers que me gustaría heredar de una clase de plantilla singleton Singleton pero el abstractRmanager necesita ser una clase de plantilla He encontrado algunos códigos de error extraños que no me sirven, he intentado buscarlo pero no suerte.¿Qué significa "plantilla de clase no especializada no se puede utilizar como argumento de plantilla"?

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

C3203 de error: '' AbstractRManagers: plantilla de clase no especializado no puede ser utilizado como un argumento de plantilla para parámetro de plantilla 'Tipo', espera un tipo real de

+0

"abstract ... managers ... singleton ..." ¡Mis ojos! Probablemente desee 'clase AbstractRManagers: public Singleton >'. –

+0

¿Qué tiene de malo eso? "abstracto ... gerentes ... singleton ..." ¡Mis ojos! –

+0

Parece una broma recurrente que tenemos en el salón C++. –

Respuesta

10

AbstractRManagers nombra una plantilla, que no es un tipo - tiene que tener un parámetro de plantilla para convertirse en un tipo. Al menos si entiendo lo que quiere, es probable que tenga algo como:

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

... que empieza a mirar con desconfianza CRTP similar.

A continuación, la nota obligatoria: las posibilidades son bastante buenas de que realmente no necesita o no quiere un singleton aquí (o casi en cualquier lugar).

4

Debe ser public Singleton<AbstractRManagers<Type> > como AbstractRManagers es una plantilla que necesita para proporcionar el tipo concreto para instanciarlo.

Cuestiones relacionadas