有没有办法在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
感谢。
答案 0 :(得分:2)
无法在C ++ 11中获得一般反思。您可以做的最接近的是通过std::type_info
运算符使用运行时类型信息将对象的类型设置为typeid
。
此type_info可以继承,您可以手动将一些额外类型的信息烘焙到您的类型中,并且可以根据需要自定义它。这在Bjarne Stroustrup的书籍“The C ++ Programming Language”和“C ++的设计和演变”中有更详细的解释,但我无法快速找到它
如果你的问题中提到的全面反思,你将不得不等待并希望在将来的标准版本中可以使用它。 C ++标准委员会小组7(SG7)目前正在研究这个问题:
答案 1 :(得分:0)
现在C ++(甚至是C ++ 11)没有这样的功能(reflection),但是这个功能将在C ++ 14中讨论: 另请参阅here和here(第7组)