根据class/struct中一个成员的地址,获取该class/struct的地址

来源:互联网 发布:数据库开发工程师前景 编辑:程序博客网 时间:2024/05/21 09:45

使用 winnt.h 下的宏: CONTAINING_RECORD

#define CONTAINING_RECORD(address, type, field) ((type *)( \
                                                  (PCHAR)(address) - \
                                                  (ULONG_PTR)(&((type *)0)->field)))


例:

class MyClass

{

public:

INT m_a;

};


已有一个指向m_a 的指针 pa;


调用 MyClass* pClass = CONTAINING_RECORD(pa, MyClass, m_a );

pClass 则为 对应的对象指针