描述:
#define METHOD_PROLOGUE_EX(theClass, localClass) \
theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
AFX_MANAGE_STATE(pThis->m_pModuleState) \
pThis; // avoid warning from compiler \
m_nOffset的计算如下:
m_nOffset= offsetof(theClass, m_x##localClass);
以下是COM原理与应用中注释:
嵌套类的m_nOffset成员记录了嵌套类对象与父类对象的偏移,所以在嵌套类内部,可以根据此偏移经计算得到父类的指针pThis,然后利用pThis调用父类的成员函数。
我的问题是:
父类的指针pThis 不就是 this 指针么?若是的话,根本不用计算出pThis 指针,真搞不懂!
解决方案1:
你看清楚啊:
class AAA
{
class BBB
{
};
};
在BBB内部this指向BBB对象地址,而要引用AAA对象地址,用this怎么可以?
>>>>> 父类的指针pThis 不就是 this 指针么?
不是的,this指针是嵌套类的this指针,pThis是父类的指针。
this实际上指向嵌套类的实例,所以不能等同于pThis。