【发布时间】:2020-05-02 12:34:34
【问题描述】:
#include <iostream>
using namespace std;
template <class X, class Y>
Y big(X a, Y b)
{
if (a > b)
return (a);
else return (b);
}
int main()
{
cout << big(32.8, 9);
}
这里我在 CPP 中使用模板,所以当我绕过 double 和 int 类型的参数调用函数 big 时,我想要返回答案是 double。这里的类型,它返回32而不是32.8。
如何获得我想要的输出?
如何编写正确的big函数返回类型?
【问题讨论】:
-
一个函数只能返回一个固定类型。您不能在运行时选择要返回的类型。
-
您可能想看看
std::max是如何实现的。函数的返回类型必须在 C++ 的编译时知道。所以你不能让这个返回类型依赖于参数的运行时值。这就是为什么对于这样的函数,您需要两个参数具有相同的类型(即具有类型 X,但不是 Y)。
标签: c++ function templates return-type function-templates