如何在C ++中获取类的成员变量列表?

时间:2015-08-03 10:39:24

标签: c++ class variables

有没有办法可以获得一个列表,或者可能遍历一个类的每个成员变量的列表 - 无论它的类型如何。

我的目的是将它们全部添加到模板std :: map。

class Person
{
    int Age;
    char *Name;
    template<typename Container> std::map<char *, Container> List;
    void MakeList()
    {
       for(auto i : Person.memberVariables)
       {
           List.emplace(i);
       }
    }
};

我可以像上面这样做,将我的类的每个变量添加到列表中,无论其他代码有多么不正确。添加到列表是我感兴趣的。

提前致谢。

2 个答案:

答案 0 :(得分:3)

不,你不能用C ++来做。这称为reflection,目前C ++不支持。

ISO C ++ comitee讨论了为C ++ 17提出的编译时反射,它将允许您在编译时迭代类成员。但是这个功能需要花费很多时间才能标准化并在通用编译器上实现

作为旁注,我不明白为什么人们想要迭代成员变量,然后可能实现序列化方法,在这种情况下我要求类实现serialize方法并强制执行SFINAE

答案 1 :(得分:2)

如果有,我会非常惊讶。

这称为reflection,据我所知,C ++不支持。