泛型函数可以用于求结构吗?

时间:2014-03-05 17:14:43

标签: c++ generics generic-programming

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

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
}

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

2 个答案:

答案 0 :(得分:0)

正如Joachim Pileborg所说,

  

不,C ++没有introspection因此无法获得结构   未知结构的成员。

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

答案 1 :(得分:-1)

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