2010-03-25 127 views
1

例如,我有一個結構,其是這樣的:獲得名稱和一個結構域的類型,從物體

struct Test 
{ 
    int i; 
    float f; 
    char ch[10]; 
}; 

我有這個結構的目的,例如:

Test obj; 

現在,我想以編程方式獲取字段名稱和obj的類型。可能嗎?

這是C++ BTW。

+0

如果你能得到它,你會如何處理這個名字? – 2010-03-25 09:57:08

+0

必須根據代碼生成一些文件。我們可能會在離線時解析源代碼文件,但我正在尋找一些看起來不存在的優雅解決方案:( – Aamir 2010-03-25 10:05:56

回答

3

恐怕你不能得到字段名,但你可以得到的OBJ使用Boost.Typeof類型:

#include <boost/typeof/typeof.hpp> 
typedef BOOST_TYPEOF(obj) ObjType; 
1

沒有它不可能沒有寫自己的「結構」體系。您可以獲得會員的大小,但您需要知道其名稱。就我所知,C++不允許在編譯或運行時枚舉給定對象的成員。你可以放一些函數,比如「GetNumMembers()」和「GetMemberSize(index)」等來獲得你後面的信息...

0

您可能還想在網上搜索「C++序列化」,特別是Boost庫。我也會搜索堆棧溢出「C++序列化」。

許多C++新手想從類名創建對象實例或根據名稱填充類字段。這就是序列化或反序列化派上用場的地方。

我需要類和成員名稱的經驗來自打印調試信息。處理異常時,類和字段名稱會很有用,尤其是生成它們。

相關問題