C++ 对象.getClass().getMethods()

标签 c++ object methods

<分区>

Possible Duplicate:
How can I add reflection to a C++ application?

有没有办法在 C++ 中获取对象或类的类名、类成员和类方法?

在 Java 中我可以使用:

Object.getClass().getMethods()
Object.getClass().getName()
Object.getClass().getDeclaredMethods();
Object.getClass().getDeclaredFields();
Object.getClass().getMembers();

我知道QT中有metaObject-Class。但我不想使用这个框架。 boost-libary 或 STL 中是否还有其他内容?

http://doc.qt.digia.com/qt/metaobjects.html#meta-object-system

谢谢。

最佳答案

在 C++11 中无法获得一般反射。您可以做的最接近的事情是将对象的类型设置为 std::type_info。通过 typeid 使用运行时类型信息运营商。

此 type_info 可以继承自,使您能够手动将一些额外的类型信息烘焙到您的类型中,并且您可以根据需要对其进行自定义。这在 Bjarne Stroustrup 的书 “C++ 编程语言”“C++ 的设计与演化” 中有更详尽的解释,但我无法快速找到 Web 引用

如您的问题中所述,为了全面反射(reflection),您将不得不等待并希望这将在标准的 future 版本中可用。 C++ 标准委员会第 7 小组 (SG7) 目前正在研究此问题:

http://isocpp.org/std/the-committee

关于C++ 对象.getClass().getMethods(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799792/

相关文章:

c++ - 进程间通信——在共享内存中锁定互斥锁

c++ - 文本冒险 - 如何在不预先定义每个项目的情况下将项目添加到 'inventory' 结构/类?

javascript - 仅克隆具有少量属性的对象

java - 如何通过其他类访问存储到ArrayList中的对象的元素

Python:什么时候应该使用子类而不是方法?

c++ - 自定义 Windows 身份验证包

c++ - fatal error C1083 : Cannot open include file: 'GL/glew.h' : No such file or directory

javascript - Javascript多个API提取(youtube)

javascript - 使用动态计算的名称访问对象属性

php - 在 PHP 中访问单例方法