Что означает «шаблон неспециализированного класса нельзя использовать в качестве аргумента шаблона»? - PullRequest
7 голосов
/ 02 марта 2012

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

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

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

Ответы [ 2 ]

12 голосов
/ 02 марта 2012

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

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

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

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

4 голосов
/ 02 марта 2012

Это должен быть public Singleton<AbstractRManagers<Type> >, так как AbstractRManagers - это шаблон, который вам нужно указать для конкретного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...