我想知道如何编写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'作为输入并生成输出。也许可以使用模板 - 如果是这样的话,如何构建它?
答案 0 :(得分:2)
这在标准C ++中是不可能的,它不能以这种方式工作。 C ++ does not have reflection。
答案 1 :(得分:1)
这当前是不可能的,但可能在带有静态反射的C ++ 17中可用。
答案 2 :(得分:0)
有两种方法可以解决c ++中缺少对反射的支持。
第一个是使用std :: tuple而是迭代它。这可以通过反射显式完成,也可以很好地包装在boost :: fusion中。
c ++ 14的第二个posibillity是boost :: hana。在boost :: hana中有结构,可以迭代。这是在预处理器宏的帮助下完成的。
如果您仍然感兴趣,我可以在这里发布一个最小的例子。