【发布时间】:2014-11-05 15:45:00
【问题描述】:
我前段时间偶然发现了这个问题,我终于需要得到一个答案!
问题如下:
#include <iostream>
using namespace std;
template <class FIRST, class SECOND>
FIRST multiply(FIRST a, SECOND b){
return a * b;
}
int main(){
int x = 39;
double y = 38.38;
cout << multiply(x, y) << endl;
}
在这个 C++ 代码中,我有两个模板参数,函数的返回类型是一个参数的类型。我的问题是返回类型必须是(在这种情况下)与变量 a 相同的类型。我用第三个模板参数尝试了它,但它给了我一个编译错误,谁能给我解释一下?
我不想让它通常是long 或其他东西,我希望返回类型是传递的变量的“最大”类型,这样它也可以与字符和字符串一起使用(对于那些我显然会做其他操作或其他事情,这只是一个例子)。
【问题讨论】:
-
您可能需要更正您的术语。您有一个带有两个 模板参数的函数模板。
-
谢谢你,因为我还不能说
-
为什么你希望返回类型像
a,在你的例子中是int?int*double给你double并且,基本上,当从操作结果返回int时,你会丢失一个分数。
标签: c++ templates return-type