C++ 标识类成员的数据类型

C++ 标识类成员的数据类型,c++,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(*(pointer

我正在浏览类成员,并试图找出它们是哪种数据类型

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

对于我对这个函数的每次调用,我不断地将
偏移量增加
+=0x01
,但是它总是打印
无符号长的
,这是
指针对象的类型
,我如何打印该偏移量中类成员的数据类型?(它不需要是指针,我只需要识别它)

C++没有这种类型的反射。如注释所述,表达式的类型是
DWORD
,因此这就是您得到的答案。地址没有意义


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

那么,
指针tozobject
指向一个
DWORD
数组(
无符号长字符
)。您还希望它输出什么?谢谢,
offsetOf
帮助很大,而且我不知道您可以通过调试获得它,并看到偏移量被移到寄存器中