2013-06-23 95 views
0

我正在瀏覽類成員,我試圖找出它們是哪種數據類型。確定類成員的數據類型

class ZObject 
{ 
public: 
    int a; //0x00 
    bool b; //0x01 
    DWORD c; //0x02 
    DWORD d; //0x03 
    D3DXVECTOR3 e; //0x04 
}; 
DWORD offset = 0x01; 
void PrintDataType(DWORD* pointertozobject) 
{ 
    printf( typeid(*(pointertozobject +offset)).name()); 
} 

我一直在通過增加+=0x01offset,每個呼叫我做的這個功能,但它總是打印unsigned long這是pointertozobject類型,我怎麼能打印類成員的數據類型在抵消? (它不需要是指針,我只需要識別它)

+2

好吧,'pointertozobject'指向一個'DWORD'('unsigned long')的數組。你還希望它輸出什麼? – 2013-06-23 05:37:55

回答

1

C++沒有那種類型的反射。正如評論所述,您的表情的類型DWORD,所以這就是您得到的答案。地址是沒有意義的。

爲了從結構偏移量中查找類型,您必須自己構造表格,使用offsetOf()typeid()來手動記下每個成員的類型及其偏移量。然後,您可以在表格中搜索所需的偏移量並查找類型。

+0

謝謝,'offsetOf'幫助了很多,我不知道你可以通過調試得到它,並看到偏移量被移入寄存器 –