Что означает" шаблон неспециализированного класса не может использоваться в качестве аргумента шаблона"?

У меня есть класс под названием AbstractRManagers, который я хотел бы унаследовать от одноэлементного класса шаблона Singleton, но abstractRmanager должен быть классом шаблона. я столкнулся с некоторыми странными кодами ошибок, которые не дают пользы, я попытался найти его, но не повезло.

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

ошибка C3203: 'AbstractRManagers': шаблон неспециализированного класса не может используется в качестве аргумента шаблона для параметра шаблона 'Type', ожидаемого реальный тип

2 ответов


AbstractRManagers называет шаблон, который не является типом - он должен иметь параметр шаблона, чтобы стать типом. По крайней мере, если я понимаю, чего вы хотите, вам, вероятно, нужно что-то вроде:

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

...который начинает выглядеть подозрительно CRTP-как.

тогда обязательное Примечание: шансы довольно хороши, что вам действительно не нужен или не нужен синглтон здесь (или почти в любом месте).


Он должен быть!--0--> as AbstractRManagers - это шаблон, который вам нужно предоставить конкретный тип для его создания.