有没有办法可以获得一个列表,或者可能遍历一个类的每个成员变量的列表 - 无论它的类型如何。
我的目的是将它们全部添加到模板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);
}
}
};
我可以像上面这样做,将我的类的每个变量添加到列表中,无论其他代码有多么不正确。添加到列表是我感兴趣的。
提前致谢。
答案 0 :(得分:3)
不,你不能用C ++来做。这称为reflection
,目前C ++不支持。
ISO C ++ comitee讨论了为C ++ 17提出的编译时反射,它将允许您在编译时迭代类成员。但是这个功能需要花费很多时间才能标准化并在通用编译器上实现
作为旁注,我不明白为什么人们想要迭代成员变量,然后可能实现序列化方法,在这种情况下我要求类实现serialize
方法并强制执行SFINAE
答案 1 :(得分:2)
如果有,我会非常惊讶。
这称为reflection,据我所知,C ++不支持。