泛型函数是否可以用于对结构求和

Can a generic function be used for summing structs?

本文关键字:结构 求和 用于 函数 是否 泛型      更新时间:2023-10-16

>假设我有一个结构,例如:

struct Foo {
    double a;
    float b;
    int c;
};

fooAfooB(均为 Foo 型)相加等于:

{fooA.a + fooB.a, 
 fooA.b + fooB.b, 
 fooA.c + fooB.c};

现在我的问题是,是否可以创建一个通用函数,以这种方式将结构相加? 即:

template <typename StructType>
StructType sumStructs(StructType A, StructType B) {
    // sum component with one another, return resulting struct
}

或者,您需要施加哪些限制才能实现?

正如Joachim Pileborg所说,

不,C++没有内省,所以没有办法获得结构 未知结构的成员。

所以我最终做的是为每个结构单独重载+。这反过来又允许我创建一个泛型函数,该函数接受一个节点,并对其所有父结构求和(例如,用于对位置求和,以获取对象的绝对位置)。

是的,你当然可以。 您还可以重载 + 运算符,并免费获得这种类型的泛型。 C++中有很多想法是这样的。 Less<T>beginend免费功能。