标识类成员的数据类型

时间:2013-06-23 05:34:48

标签: c++

我正在通过班级成员进行导航,我正试图找出他们的数据类型。

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() );
}

我为offset增加了+=0x01,对于我对此函数的每次调用,但它总是打印unsigned long这是pointertozobject的类型,我该怎么办?在该偏移量中打印类成员的数据类型? (它不需要是指针,我只需要识别它)

1 个答案:

答案 0 :(得分:1)

C ++没有那种类型的反射。正如评论所述,表达式的类型DWORD,所以这就是你得到的答案。地址毫无意义。

为了从结构偏移中找到类型,您必须自己构建表,使用offsetOf()typeid()来手动记录每个成员的类型及其偏移量。然后,您可以在表格中搜索所需的偏移量并找到类型。