使用 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 则为 对应的对象指针