【发布时间】:2021-04-13 12:39:45
【问题描述】:
我想使用具有两种或多种数据类型的函数模板。所以我做了一个例子,它获取两个'T'类型数据然后返回'T1'类型数据。这是代码:
#include <iostream>
using namespace std;
template <typename T, typename T2> T get(T2 a, T2 b)
{
if (a < b)
return b;
else
return a;
}
int main()
{
cout << get<float, int>(10.2, 20.3);
}
我希望这段代码将两个“int-type”数字中较大的一个返回到“float”类型。 也就是说,我预计结果为“20.0”。但结果是 20。我不明白为什么结果的类型是 'int'。 请更正我的代码以返回“浮点”类型“20.0”。 即我想知道如果输入因子和返回值不同,如何指定返回值的数据类型。
【问题讨论】:
-
当你调用它时,你明确告诉编译器第二个参数是
int。 -
10.2和20.3在函数中被强制转换为int,然后当你return时,那些(现在)int被强制转换为float,所以你失去了.3在处理中 -
另外,
get(T2 a, T2 b)应该是get(T a, T2 b) -
非常感谢。现在我可以理解为什么结果的类型是
int了。但很抱歉,我不知道如何将 T 设置为float。 -
这段代码只是为了练习。我制作这段代码来制作函数模板,输入参数的类型是
T,返回类型是T2