書き込もうとしているいくつかのイベントハンドラークラスに問題があります。基本的には、オブジェクトの論理グループごとにイベントハンドラークラスを用意するという考え方です。ほとんどの場合、イベントはオブジェクトとそのハンドラーの間で発生しますが、場合によっては、イベントがハンドラーオブジェクト間でも送信されます。
イベントがスタックに配置されるようにコードを記述しました(ユーザーが作成した構造のようにスタックします。イベント自体はを使用して割り当てられますnew
)delete
。dは、情報が読み取られて処理された後です。あるケースでは、イベントが3つのハンドラーのチェーンに沿って送信されるため、これは私にいくつかの問題を与えています。たとえば、にHandlerA
を送信しますnew Event
。HandlerB
これは、スタックに配置して読み取り、に送信します。に送信するとHandlerC
、読み取りと実行に必要な処理が実行され、その後delete
、イベントポインタがに設定されNULL
ます。今、私たちは戻ってHandlerB
、まあ、それはまたしたいと思っていdelete
ますNULL
イベントへのポインタ。ただし、ポインタはローカル変数であり、同じアドレスを2回削除することになり、例外が発生します。
これをどのように回避しますか?あなたはそれらの派手なものの1つを使う必要がありますかauto_ptr
(まだここでは初期の学習者です)、それとも私はここで基本的な何かを逃していますか?