C ++函数输出通用结构

时间:2016-05-11 01:54:33

标签: c++ function templates struct

我想知道如何编写C ++函数来打印通用结构的属性。例如,

struct a {
std::string field_1;
std::string field_2;
std::string field_3;
};


struct b {
int a;
int b;
int c;
};

该函数将结构形式为'a'或'b'作为输入并生成输出。也许可以使用模板 - 如果是这样的话,如何构建它?

3 个答案:

答案 0 :(得分:2)

这在标准C ++中是不可能的,它不能以这种方式工作。 C ++ does not have reflection

答案 1 :(得分:1)

这当前是不可能的,但可能在带有静态反射的C ++ 17中可用。

另见Compile-time reflection in C++1z?

答案 2 :(得分:0)

有两种方法可以解决c ++中缺少对反射的支持。

第一个是使用std :: tuple而是迭代它。这可以通过反射显式完成,也可以很好地包装在boost :: fusion中。

c ++ 14的第二个posibillity是boost :: hana。在boost :: hana中有结构,可以迭代。这是在预处理器宏的帮助下完成的。

如果您仍然感兴趣,我可以在这里发布一个最小的例子。