如何避免析构函数中存在的其他类成员
如何处理析构函数中存在的其他类成员?
你好:
向您请教一个问题
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这么简单的道理,不知道你要疑惑啥。
你好:
向您请教一个问题
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这么简单的道理,不知道你要疑惑啥。