我有这个模板:
template<class a>
a multiply(a x, a y){
return x*y;
}
如何传递不同类型的参数? (例如int和float)
答案 0 :(得分:5)
这取决于你想要达到的目标。您可以明确指定模板参数(而不是让它被推断),这将导致&#34;不匹配&#34;转换为该类型的参数。
本回答中的所有示例均假设int i; float f;
例如,你可以这样做:
float res = multiply<float>(i, f); //i will be implicitly converted to float
或者这个:
int res = multiply<int>(i, f); //f will be implicitly converted to int
甚至这个:
double res = multiply<double>(i, f); //both i and f will be implicitly converted to double
如果你真的想接受不同类型的参数,你需要以某种方式处理返回类型规范。这可能是最自然的方式:
template <class Lhs, class Rhs>
auto multiply(Lhs x, Rhs y) -> decltype(x * y)
{
return x * y;
}
答案 1 :(得分:1)
像往常一样调用函数:
int x = 2;
int y = 3;
multiply(x,y);