假设我们有一个 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/