3

スロットを持つオブジェクトが破棄されると、シグナルが自動的にスロットを切断するという特定の機能を備えたシグナル/スロット C++ ライブラリが必要です。

Boost::signals2 は、boost::shared_ptr で作成されたオブジェクトに対してのみこの機能を提供し、どこでも std::shared_ptr を使用し続けたいと考えています。std::shared_ptr で動作させるオプションがありますが、いくつかの特殊なテンプレートを作成する必要があり、それがどのように機能するかについての情報はなく、一般的には避けたいと思います (インターネットのどこかにコードがない限り、しかし見つけられませんでした)。

Qt シグナルにこの機能があることは知っていますが、Qt は大きすぎてすべてのプロジェクトで使用できません。

4

2 に答える 2

2

Boostのドキュメント(1.48.0でチェック済み)によると、必要なテンプレートの特殊化はBooststd::shared_ptrstd::weak_ptrすでに存在しているため、stdスマートポインターはsignals2(を介して)ですぐに使用できるはずslot::track_foreignです。

于 2013-02-19T09:23:40.413 に答える
1

sigslot ライブラリを参照することをお勧めします -- http://sigslot.sourceforge.net

これは、プリプロセッサ (Qt のシグナルなど) を必要としない単純なメカニズムであり、削除されたスロットの自動切断を提供します。

于 2013-02-22T21:22:31.700 に答える