CONTAINING_RECORD宏

CONTAINING_RECORD宏的使用

已知类或结构体成员变量的地址,可以取得类或结构体对象的地址。

  • 代码

    #include 
    #include 
    
    
    
    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
CONTAINING_RECORD宏_第1张图片
CONTAINING_RECORD宏_第2张图片

你可能感兴趣的:(C/C++,Win32/MFC,空指针妙用)