【发布时间】:2020-01-26 22:01:08
【问题描述】:
给定以下模板化方法
template <typename T>
T max(T x, T y)
{
return (x > y)? x : y;
}
我希望以下调用起作用:
int main()
{
cout << max(3, 7.0) << std::endl; //compiler error
}
我知道编译器失败是因为我传递了 2 个不同的数据类型,而我的模板只接受 2 个相同类型的参数。 最简单的解决方案是使用多态性并创建一个使用类型 T 和 X 而不是 2 类型 T 的新模板方法,但我想问你是否有一种方法可以将参数 y 转换为参数 x 的类型而无需修改 main() 中的调用
【问题讨论】: