コールバックを処理する非常に単純なクラスがあります。発信者がマネージャからのコールバックを要求します。Callback オブジェクトが呼び出し元によって保持されている限り、それは有効なままです。ただし、オブジェクトが終了すると、そのデストラクタが 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
の機能の背後にある基本的な考え方を維持しながら、これを防ぐ方法はありますか?