假设我有一个结构,例如:
struct Foo {
double a;
float b;
int c;
};
总结fooA
和fooB
(类型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
}
或者,您需要施加哪些限制才能实现?
答案 0 :(得分:0)
正如Joachim Pileborg所说,
不,C ++没有introspection因此无法获得结构 未知结构的成员。
所以我最终做的是单独为每个结构重载+
。这反过来又允许我创建一个接受节点的泛型函数,并对其所有父结构进行求和(例如,对于求和位置的有用位置,以获取对象的绝对位置)。
答案 1 :(得分:-1)
是的,你当然可以。你也可以重载+运算符,并免费获得这种类型的泛型。 c ++中有很多想法都是这样的。 Less<T>
或begin
和end
免费功能。