我有一个非常简单的类来处理回调。来电者要求经理回电。只要调用者持有回调对象,它就保持有效。然而,一旦对象死亡,它的析构函数会将 Manager 内的指针设置为 NULL,因此它知道在下次遇到它时将其丢弃。
...或者至少,这是我所追求的基本理念。
class Manager{
public:
void executeOnList() { ... }
Callback requestCallback(Drawable * target){
Drawable ** ptr = list.add(target);
return Callback(ptr); // <-- the point of interest
}
private:
List list;
};
class Callback{
friend Manager;
private:
Callback(Drawable ** targetPtr){
drawablePtr = targetPtr;
}
public:
~Callback(){
(*drawablePtr) = NULL; // <-- dtor of interest
}
private:
Drawable ** drawablePtr;
};
我的问题是,在将结构返回给调用者之前会Manager::requestCallback()
调用析构函数吗?Callback
如果是这种情况,是否有任何方法可以防止这种情况,同时(或多或少)保持Callback
's 功能背后的基本思想?