【问题标题】:How to get a list of a class's member variables in C++? [duplicate]如何在 C++ 中获取类的成员变量列表? [复制]
【发布时间】:2015-10-25 10:30:20
【问题描述】:

有没有一种方法可以让我获得一个列表,或者遍历一个类的每个成员变量的列表——不管它是什么类型。

我的意图是将它们全部添加到模板 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);
       }
    }
};

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

提前致谢。

【问题讨论】:

  • 阅读 ["如何向 C++ 应用程序添加反射?"][1] 看看它是否能解决您的问题。 [1]:stackoverflow.com/questions/41453/…
  • @Tom:很好的发现,实际上是重复的。

标签: c++ class variables


【解决方案1】:

不,你不能在 C++ 中做到这一点。这称为 reflection,目前 C++ 不支持。

ISO C++ 委员会讨论了针对 C++17 提出的编译时反射,它允许您在编译时迭代类成员。但是这个特性要标准化并在通用编译器上实现还需要很长时间

作为旁注,我不明白为什么要迭代成员变量,而不是实现序列化方法,在这种情况下,我需要类实现 serialize 方法并使用 @987654321 强制执行它@。

【讨论】:

  • 当我写“据我所知”时,我有这个确切的疑问。 C++ 总是让你惊讶于它可以做或将能够做的事情。 ;-)
【解决方案2】:

如果有,我会非常惊讶。

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

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 2013-04-02
    • 2021-05-10
    • 2021-07-22
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多