您的位置:首页 > 其它

类A 包含类B的实例, 在类B的成员函数执行时动态获得类A的地址

2008-05-07 18:12 253 查看
在看<<COM本质论>> 时有下面的一个小问题:假如类A 包含类B的实例, 在类B的成员函数执行时动态获得类A的地址。

思考了一会, 写出了实例代码如下:

class CRoom
{
public :

class Bed
{
public :
int m_member1;
int m_member2;
};

class Door
{
public :
int m_member1;

void Open()
{
cout<<"Open Operation"<<endl;
}

int GetParentClsThisPointer()
{
CRoom *plObj = NULL ;

int lioffset = reinterpret_cast<int>( &plObj->mDoor) ; //获得类Door 实例在CRoom实例中的偏移
int liParentClsThisPointer = reinterpret_cast<int>(this)-lioffset ; //得到类CRoom实例的地址

return liParentClsThisPointer ;
};

};

Bed mbed;
Door mDoor ;
};

类 CRoom 包含类 Door 的实例,在类 Door 的 GetParentClsThisPointer 中动态获得类 CRoom 实例的地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐