“非专业化的类模板不能用作模板参数”是什么意思?

时间:2012-03-02 05:09:56

标签: c++ templates inheritance

我有一个名为AbstractRManagers的类,我想继承单例模板类Singleton但是abstractRmanager需要是一个模板类我遇到了一些没用的奇怪错误代码,我试过查找它但是要没运气。

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

错误C3203:'AbstractRManagers':非专业化的类模板不能   用作模板参数'Type'的模板参数,预期   一个真实的类型

2 个答案:

答案 0 :(得分:11)

AbstractRManagers命名一个模板,它不是一个类型 - 它必须有一个模板参数给成为一个类型。至少如果我理解你想要什么,你可能需要这样的东西:

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

......开始看起来像CRTP一样可疑。

然后是强制性的说明:在这里(或几乎在任何地方)你真的不需要或想要单身人士的机会非常好。

答案 1 :(得分:4)

它应该是public Singleton<AbstractRManagers<Type> >,因为AbstractRManagers是一个模板,您需要提供具体类型来实例化它。