【发布时间】:2014-03-06 19:52:39
【问题描述】:
假设我有一个结构体,比如:
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
}
或者,您需要施加哪些限制才能使其成为可能?
【问题讨论】:
-
不,C++ 没有introspection,因此无法获取未知结构的结构成员。
-
我认为你不需要自省,这里需要的是编译时反射。这可以通过各种方式实现,但不能使用“香草”C++。 (例如带有代码生成的多阶段构建)。
标签: c++ generics generic-programming