CONTAINING_RECORD宏的使用
已知类或结构体成员变量的地址,可以取得类或结构体对象的地址。
-
代码
#include <windows.h> #include <iostream> class MyClass { public: MyClass(){} virtual ~MyClass(){} public: int m_Value1; int m_Value2; int m_Value3; }; int main(int argc, char** argv) { //已知类或结构体成员变量的地址,可以取得类或结构体对象的地址 MyClass myObj; int* pValue2 = &(myObj.m_Value2); MyClass* pObjBase = CONTAINING_RECORD(pValue2, MyClass, m_Value2); std::cout << "long long(&myObj)" << long long(&myObj) << std::endl << "long long(pObjBase)" << long long(pObjBase) << std::endl; return 0; }
-
输出结果
CONTAINING_RECORD的探究
以下内容来自:https://blog.csdn.net/zyhse/article/details/109246875