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(*(pointertozobject +offset)).name() );
}

我一直将 offset 增加 +=0x01,对于我对该函数所做的每次调用,但它总是打印 unsigned long,这是pointertozobject 的类型,如何在该偏移量中打印类成员的数据类型? (不需要是指针,我只要能识别即可)

最佳答案

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

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

关于c++ - 识别类成员的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258000/

相关文章:

c++ - 如何在 LLVM 中运行模块传递

c++ - 使用 Indy TIdTCPServer 的 Windows 服务(CodeGear C++ XE5)中的内存泄漏

c++ - QWebView::settings()->setUserStyleSheetUrl() 从 QtWebKit 到 QtWebEngine?

c++ - 矩阵转置模板

c++ - Qt 中具有高度依赖函数的单元测试

c++ - 时间与 gettimeofday C++

c++ - 函数对象转换为函数指针

c++ - 在多帧 dicom 图像中插入修改后的像素数据?

c++ - 查找模板相等运算符

c++ - 显式析构函数调用后此赋值是否无效?