假设我有一些不同类型的变量,它们需要相同的计算。例如:
int func(int a, int b)
{
return a+b;
}
QVector3D func(QVector3D a, QVector3D b)
{
return a+b;
}
在两个函数中完成的操作可能非常复杂,但实际上,它们只是针对不同类型的参数执行相同的计算,并返回不同类型的值。 有什么办法可以只为c ++中的这些不同类型的变量编写一个函数?
答案 0 :(得分:4)
扩展rtpax的注释,您可以编写模板函数来对两种任意类型(相同类型或其他类型)执行'+'运算符。要求是使用的类型组合必须存在“ +”运算符。
template <typename T, typename K>
auto foo(T _a, K _b ) -> decltype(_a + _b) {
return _a + _b;
}
该函数签名的英文版为:函数foo,它具有T和K这两种类型,其中返回类型是操作T + K的返回类型。