如何遍历C ++类的所有字段?

时间:2015-04-19 20:27:13

标签: c++ c++11 reflection visitor

我开发了用于研究目的的小型反射库。我想遍历一些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的签名是不可变的。我无法改变它。

0 个答案:

没有答案