オブジェクト 1 に Boost.Signals2 信号があり、オブジェクト 2 に接続します。
オブジェクト 2 が破壊された場合、信号は切断されず、信号が送信されたときに問題が発生する可能性があります。
これを解決するためにscoped_connection
、オブジェクト 2 を保持します。問題は、オブジェクト 1 がシグナルで破壊され、次にオブジェクト 2 が破壊された場合です。
それは問題を引き起こしますか?一般的な問題を解決するためのより良い方法はありますか? (オブジェクト 1 -> オブジェクト 2 からの接続があり、そのうちの 1 つが破棄されると切断されます)。
問題を示すコード:
auto sig = new signal<void ()>();
auto conn = new scoped_connection(sig.connect(&some_function));
delete sig;
delete conn;
これは安全ですか?