問題タブ [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.
c++ - Boost.Signals の廃止
Boost.Signals は積極的に維持されなくなったため、非推奨になりました。新しい開発には Boost.Signals を使用しないでください (代わりに Boost.Signals2 を使用してください)。既存の Boost.Signals ベースのコードがある場合は、引き続き機能しますが、Boost.Signals2 への移行を検討してください。
http://www.boost.org/users/history/version_1_54_0.html
そのため、シグナルは非推奨です。私はこれについて混乱しています。私の知る限り、Signals2 は Signals のマルチスレッド バージョンです。しかし、Signal をマルチスレッドで使用する必要がない場合はどうすればよいでしょうか? オーバーヘッドが発生しますか?boost::signals2::trackable を使用できますか? シングルスレッド アプリケーションで Signals2 を使用すると、不利な点はありますか?
c++ - ブースト信号を使用する方法と理由2?
C++ を学習し、いくつかのパターンに慣れようとしています。シグナル2 のドキュメントには、スロットとシグナルを使ってできることの膨大な配列が明確に記載されています。私が理解していないのは、どのタイプのアプリケーション (ユースケース) に使用する必要があるかということです。
私は、変更イベントをディスパッチするステート マシンに沿って考えています。動的に型付けされたバックグラウンド (C#、Java など) から来ると、イベント ディスパッチャーまたは静的参照またはコールバックを使用します。
C++ でクロスクラス コールバックを使用する際に問題はありますか? それが本質的にsignals2が存在する理由ですか?
例の 1 つはドキュメント/ビューです。このパターンは、関数のベクトルを使用してループ内で各関数を呼び出したり、登録されたリッスン クラス インスタンスの状態変更を呼び出すラムダを使用したりするよりも、どのように適していますか?
と
c++ - 関数をシグナルにバインドするスロットを取得するには?
私はsignals2を使用しています。サブスクライブされたスロットを持つビューとビューステート/ビューの関係をセットアップしようとしています。ただし、ハンドラー関数をトリガーできないようです。バインディングに何か問題がありますか?私はC ++を初めて使用するので、const/reference/dereferencerの誤用がある可能性があります。
マイ ステート マシン:
私のビューの基本クラスでは:
私の見解では、サブクラス:
メインアプリ:
c++ - ブースト信号: 信号自体を公開するか、クラス インターフェイスでメソッドを接続/切断しますか?
クラスにシグナルがある場合、クラスの「インターフェース」でシグナル自体を公開することは良い習慣であると考えられますか?
代わりに「登録」(および場合によっては「登録解除」) 関数を書いている人を見てきました。
クラスのユーザーを私が提供する機能に制限したくないので、最初のアプローチを好みます。しかし、2番目のアプローチを好む正当な理由はありますか?
c++ - Boost::signals2 - シグナルスロットを引数として渡す
特定の条件下でイベントを実行するためにシグナルを使用するクラスを作成するために、boost::signals2 を使用しています。このクラスには、 RegisterCallbackというメソッドがあります。
この関数は、シグナルが使用するスロット タイプのパラメータを取る必要があります (唯一の引数としてdoubleを持つvoid戻りタイプです)。
ただし、signal1 クラスのソース ファイルはまったく判読できないため、メソッド シグネチャでその引数をどのように定義すればよいかよくわかりません。
だから私は基本的にこれをしたい:
メンバーシグナルは次のとおりです。
...そして、これが私が必要とする登録方法です(未完成)
c++ - クランはboost::signals2が好きではありませんか?
Boost::Signals2 ライブラリを使用して、コードの一部からコンパイラ エラーが発生し続けました。私がやろうとしていることを最小限の例に減らしました:
このスニペットをコンパイルしようとすると
シグナル ライブラリ自体に起因するように見えるテンプレート推定エラーが発生します。
しばらくして、別のコンパイラを試すというクレイジーな考えに屈することにしました。同じスニペットを
エラーはありません。私は実行Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
していg++ (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
ます。ブースト ライブラリ 1.54。
プロジェクトの制限により、別のコンパイラを使用することはできません。クランに固執し、引き続きboost::signals2ライブラリを使用する方法はありますか?