我开发了用于研究目的的小型反射库。我想遍历一些C ++类的所有字段。有保证,这个类实现reflect
功能。这类课程的完整示例是:
struct some_class
{
char field1;
bool field2;
some_class()
: field1(0)
, field2(0)
{
}
};
template<class proc>
void reflect(proc& p, some_class& sc)
{
reflect(p, sc.field1, "field1");
reflect(p, sc.field2, "field2");
}
我想遍历此类的所有字段并为每个字段执行一些操作。例如,我可以打印字段或序列化它。
我想我需要实施Visitor pattern
。我也认为Generic lambdas
(С++ 14)对我有帮助。
auto lambda = [](auto x, auto y) {return x + y;};
我不知道如何解决我的任务。我期待着任何建议。
请注意,reflect function
的签名是不可变的。我无法改变它。