2012-12-10 62 views
0

可能重複:
How can I add reflection to a C++ application?C++ object.getClass()的getMethods()

有沒有什麼辦法讓在C類名,classmembers和對象的classmethods或克拉斯++ ?

在Java中,我可以使用:

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

我知道有元對象級的QT。但我不想使用這個框架。 boost-libary或STL中還有其他的東西嗎?

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

感謝。

+3

號(...........) –

+0

沒有反映在C++,對不起。您必須等到提案被接受。 – chris

+2

是否有您正在嘗試解決的特定問題?可能有另一種攻擊方法。 – snowdude

回答

0

如今C++(甚至C++ 11)不具有這樣的特徵(reflection),但這個功能將用於C++ 14進行討論: 參見herehere(組SG7)

2

沒有在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

相關問題