我试图使用模板作为变量类型传递一个类来创建我的不同单位。它说这是非法使用显式模板参数"。
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;。我不知道我需要做些什么来使其合法化。
答案 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);
}