不能让我的模板工作。非法使用显式模板参数?

时间:2014-12-26 02:22:04

标签: c++ templates

我试图使用模板作为变量类型传递一个类来创建我的不同单位。它说这是非法使用显式模板参数"。

template <class Type>
void Build<Type>()
{
    pUnit = new Type();
    unitArray.push_back(pUnit);
}

我是否必须以某种方式指定类Type是一个单元?当我改变&#34;模板&lt; class Type&gt;&#34;到&#34;模板&lt;单位类型&gt;&#34;它告诉我它是非类型模板参数&#34;非法类型&#34;。我不知道我需要做些什么来使其合法化。

2 个答案:

答案 0 :(得分:2)

“非法使用显式模板参数”只是您的无效函数模板声明语法。什么是<Type>在功能模板名称后执行此操作?它应该只是

template <class Type>
void Build()
{
  // ...
}

答案 1 :(得分:0)

我不知道unitArray是什么,所以我假设它是一个类型的向量。 我不知道pUnit是什么,我假设它是Type类型。

你有一个名为Build的函数,用void Build(){}替换它。

除非此函数在类实现中,否则您需要将pUnit和unitArray声明为我上面提到的类型的参数。

template <class Type>
void Build()
{
  pUnit = new Type;
  unitArray.push_back(pUnit);
}

template <class Type>
void Build(vector<Type> unitArray, Type * pUnit)
{
  pUnit = new Type;
  unitArray.push_back(pUnit);
}