我试图在自己的模板类中使用模板函数。我们如何声明并调用此函数?这里是我认为正确代码的一个例子,故意没有为了说明目的而实现任何目的:
template<typename T> class TEMPLATE_CLASS
{
// The template constructor
TEMPLATE_CLASS(T value)
{
// Here I call the class's template member function
// ... but fails
T variable = setVariable(value);
}
template<typename U>
T setVariable(T value_to_set)
{
return value_to_set;
}
}
答案 0 :(得分:1)
在此特定示例中,当您将T
传递给函数时,编译器无法确定U
应该是什么。通常,模板类型用于其中一个参数,然后编译器可以从那里推断出类型。
你可以使用setVariable<int>(value)
表示U
应该是int
,但从小例子来看,很难说它是感。
答案 1 :(得分:0)
在您的代码中,没有必要将此方法设为模板方法,因为您不必在其范围内的任何位置使用U
。但是如果你不这样做,你的代码应该是这样的:
template<typename T> class TEMPLATE_CLASS
{
// The template constructor
TEMPLATE_CLASS(T value)
{
// Here I call the class's template member function
// ... but fails
T variable = setVariable(value);
}
template<typename U>
U setVariable(U value_to_set)
{
return value_to_set;
}
}
如果您不想使用value_to_set
内部方法执行任何操作,请视情况而定,例如:转换为T
,您可以从中返回T
。