首页 > 解决方案 > 有什么方法可以对不同类型的变量进行相同的计算,只需一个函数?

问题描述

假设我有一些不同类型的变量,它们需要相同的计算。例如:

int func(int a, int b) 
{
  return a+b;
}

QVector3D func(QVector3D a, QVector3D b) 
{
  return a+b;
}

这两个函数中所做的操作可能非常复杂,但实际上它们只是针对不同类型的参数进行相同的计算,并返回不同类型的值。有没有办法在 c++ 中为这些不同类型的变量编写一个函数?

标签: c++

解决方案


扩展 rtpax 的注释,您可以编写一个模板函数来执行具有两种任意类型(相同类型或其他类型)的“+”运算符。要求是对于所使用的类型组合,必须存在“+”运算符。

template <typename T, typename K>
auto foo(T _a, K _b ) -> decltype(_a + _b) {
    return _a + _b;
}

函数签名的英文版本是:一个函数 foo,它有两种类型,T 和 K,其中返回类型是操作 T + K 的返回类型。


推荐阅读