問題タブ [boost-signals2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
801 参照

c++ - boost.signals2 でシグナルを中継する

以下のコード (問題の実例として実装) に見られるように、内部クラスから外部クラスに中継される中間クラスにシグナルを送信しようとしています。

望ましい結果の代わりに:

プログラムを実行すると、実際には次のようになります。

続いてクラッシュ。

「this」のアドレスが通常のメソッドで期待するものとハンドラーで異なることに既に気付きましたが、それを回避する方法がわかりません。

これに対して私が見つけた唯一の解決策は、外部クラスのシグナルをそのハンドラーに接続し、ポインター(この場合はunique_ptr)を内部クラスに格納することでした。これにより、中継する必要がなくなりましたが、感じません信号を使用する安全な方法のように。

私はC ++、特にブーストが初めてなので、内部クラスから外部クラスのコールバックをクリーンで安全な方法でトリガーする方法がよくわかりません。