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

时间:2012-12-10 11:10:21

标签: c++ object methods

  

可能重复:
  How can I add reflection to a C++ application?

有没有办法在C ++中获取对象或类的classname,classmembers和classmethod?

在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

感谢。

2 个答案:

答案 0 :(得分:2)

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

此type_info可以继承,您可以手动将一些额外类型的信息烘焙到您的类型中,并且可以根据需要自定义它。这在Bjarne Stroustrup的书籍“The C ++ Programming Language”“C ++的设计和演变”中有更详细的解释,但我无法快速找到它

如果你的问题中提到的全面反思,你将不得不等待并希望在将来的标准版本中可以使用它。 C ++标准委员会小组7(SG7)目前正在研究这个问题:

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

答案 1 :(得分:0)

现在C ++(甚至是C ++ 11)没有这样的功能(reflection),但是这个功能将在C ++ 14中讨论: 另请参阅herehere(第7组)