0

スマートポインターを格納するグローバル マップがあります。他のクラスはこれらのポインターをキーで取得します。

それらは、メンバー変数として使用キーを持っています: int USING_POINTER_KEY.

したがって、「getGlobalPointer」で定義できます。キー「USING_POINTER_KEY」でマップからポインターを取得します。

できます!そして、この方法でポインタを保存する十分な理由がありました。大丈夫です。

私の問題は次のとおりです。クラスで使用されなくなったエントリを自動的に削除するようにグローバルマップに教えるにはどうすればよいですか?

参照カウントで考えます。しかし、私は方法がわからない...

4

1 に答える 1

0

この種のキャッチオール スキームは危険信号です。

ただし、スマート ポインター ( std::shared_ptr) を使用してカスタム デリーターを作成できます。関数ポインターを 2 番目の引数としてshared_ptrコンストラクターに渡すだけです。この関数は、グローバル テーブルからポインターを削除できます。

スマート ポインターは既に参照カウントの実装であるため、コールバックを追加するだけです。

于 2013-05-08T05:41:44.717 に答える