C++ object.getClass().getMethods()

C++ object.getClass().getMethods()

本文关键字:getMethods getClass object C++      更新时间:2023-10-16

可能的重复项:
如何向C++应用程序添加反射?

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

在Java中,我可以使用:

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

我知道QT中有metaObject-Class。但我不想使用这个框架。提升库或 STL 中还有其他东西吗?

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

谢谢。

C++11 中没有办法得到一般的反思。您可以做的最接近的操作是通过 typeid 运算符使用运行时类型信息将对象的类型作为std::type_info获取。

可以从中继承此type_info,使您能够手动将一些额外的类型信息烘焙到类型中,并且可以根据需要对其进行自定义。Bjarne Stroustrup的书"The C++ Programming Language""The Design and Evolution of C++"中对此进行了更彻底的解释,但我无法快速找到它的Web参考。

为了充分思考,如您的问题中所述,您将不得不等待并希望这将在未来版本的标准中提供。C++标准委员会第7小组(SG7)目前正在研究以下方面:

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

如今C++(甚至C++11)没有这样的功能(反射),但是这个功能将在C++14中讨论:另请参阅此处和此处(SG7组)