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
帮助很大,而且我不知道您可以通过调试获得它,并看到偏移量被移到寄存器中