首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何避免析构函数中存在的其他类成员

2012-02-21 
如何处理析构函数中存在的其他类成员?你好:向您请教一个问题SwRedline::~SwRedline(){......if(!GetDoc()-

如何处理析构函数中存在的其他类成员?
你好:
向您请教一个问题

SwRedline::~SwRedline()
{
......
if(   !GetDoc()-> IsInDtor()   )
      GetDoc()-> DeleteSection(   &pCntntSect-> GetNode(),rLayout   );
......
}
这是一个析构函数,原来函数DeleteSection里是只有一个参数的,但是我现在添加了一个参数,这个参数是另外一个类(而且两个类处于设计模式的不同层次)中的成员变量,也就是说析构函数不认识这个参数,如何处理这个析构函数让它认识这个参数?从而能处理这个函数呢?

谢谢解答


[解决办法]
是啊,你怎么获得这rLayout啊,既然你要用它?
看《Applying UML and Patterns》就应该知道,一个事情,要么由它发起地处理,要么由掌握了所有处理因素的集中地处理,要么每个环境处理自己能处理的部分并往下传递。
所以,要么你的这个SwRedline类自己就有rLayout作为成员,要么它的某个成员或者全局函数能返回你要的rLayout,那么这个DeleteSection可以在此增加参数。
否则,你就不可以在此增加参数。
推导结果就是,DeleteSection恐怕不能由你这个类来调用了;或者你的类层次设计上有严重问题,rLayout的被引用体不该放在另外一个类(不同层)中。
这几乎就是1+1=2这么简单的道理,不知道你要疑惑啥。

热点排行