c++ - C/C++ 可以通过查询类来获取实例成员的 "list"?

标签 c++ c instance-variables

假设我们有一个 C++ 结构体:

struct foobar
{
      int age; 
      bool hot;
      String name
};

有没有办法以编程方式查询上述结构以提取其实例成员?例如:

String[] members = magicClass.getInstanceMembers(foobar);

成员将有 ["age", "hot", "name"] 作为它的值。

可能吗?我问的原因是因为我有随时间变化的结构(添加/删除的变量)。我希望能够使用这些保存的数据创建自动生成的 Lua 文件。

谢谢

最佳答案

不,标准 C++ 不支持这种类型的反射。有一些“hacky”方法使用宏来创建类型特征式模板,该模板将使用 SFINAE静态确定特定类是否具有特定的数据成员或成员函数,但不会实际枚举类的每个成员。

事实上,C++ 在设计时考虑了某种哲学,即使不是适得其反,也很难支持我们在 C#/Java 等高级语言中看到的运行时反射类型。见 Why does C++ not have reflection?对这个问题进行彻底的讨论。

关于c++ - C/C++ 可以通过查询类来获取实例成员的 "list"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110037/

相关文章:

python - 如何将 GtkTreePath 或 GtkTreeIter 获取到 GtkTreeModel 的最后一行?

c - ncurses 和 getch - 处理删除和箭头字符

java - 使用实例变量访问静态变量

ruby - 将 Ruby 对象的实例变量作为映射传递给另一个类的初始化器

c++ - 独立代码生成不支持函数 'uigetfile'

c++ - 枚举 "ghost values": what for?

c++ - 如何使用模板作为参数调用函数

C - 在数组中使用字符串

python - 写入文本文件的私有(private)变量

c++ - 为什么这个 for 循环不停止?