2013-06-23 93 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'帮助了很多,我不知道你可以通过调试得到它,并看到偏移量被移入寄存器 –