問題タブ [boost-msm]
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 MSM でコンパイル時間を短縮する方法
約 40 の遷移 (4 つのサブステート マシンを含む) を持つルート ステート マシンがあります。すべてうまくいきましたが、トランジションの数を増やし始めると、コンパイル時間が大幅に増加します (大規模なステートマシンの開発は地獄になります)。boost::msm::back::favor_compile_time ポリシーを使用して、サブマシンを複数の翻訳単位に分割しようとしましたが、効果がありません。この問題に関する回避策はありますか?ブースト - 1.53、コンパイラ - MSVC 2012、プロセッサ - Intel i7
Upd: 時間を短縮する最善の方法 - プロジェクトからブースト msm を削除します
c++ - Boost::MSM: Transition Priority
I try to use boost::MSM to implement a simple state machine for testing purpose. There are several events which have to be processed in the right order, so i defer the other events, which are currently not allowed. I try to defer the events in the transition table, to have one place to look for it, despite having all states to look, what events they defer.
I tried to change the transition rows to change their priorities, but it didnt help. If i unkomment the anonymous transition from live_got_image to live_wait_for_image, it works as expected, but i want to transition automaticly to repeatedly enter the states live_wait_for_image/live_got_image until the ev_stop_live get sent.
I expect the following output:
but actually i get the following output:
I use boost 1.57.0 and MSVC-2013 (VS-12).
Could anybody get me a useful hint?
Georg
Here is the code:
c++ - boost:msm にデフォルト コンストラクターがないステート マシン
boost::msm のドキュメントには、デフォルト コンストラクターのないステート マシンの例があります。スーパー SM からサブ SM に直接ジャンプする場所で動作させることができます。しかし、あるサブ SM から別のサブ SM にジャンプすると、ターゲット SM がデフォルトで構築され、データが失われます。以下は例です。サブ状態のデフォルトのコンストラクターを提供しないとコンパイルできません。これを機能させるには、サブ SM に追加情報を提供する必要がありますか?
例を実行すると、次のようになります。
0xdeadbeef は他のものと同じアドレスだと思っていました。
c++ - boost::msm でのサブ SM 間のジャンプ
メイン SM 内に 2 つのサブ SM があります。メイン SM からどちらか一方にジャンプできるようにしたいのですが、一方のサブ SM から他方の SM にもジャンプできるようにしたいです。しかし、私はできません。メイン SM からサブ SM にジャンプしたり、サブ SM の 1 つから別のサブ SM にジャンプしたりできますが、サブ SM 間に「相互」トランジションを追加すると、コンパイルが失敗し、さまざまなことについて文句を言う ~10 エラーが発生します。これは、コンパイラが再帰的なスピンに入るためだと思います。
メイン SM にダミー状態を追加し、ターゲット サブ SM への匿名遷移を追加できると思います。しかし、その後、移行をトリガーした実際のイベントを失うことになり、それは望ましくありません (データが含まれています)。
問題のある行をコメントアウトしたテストコードを次に示します
boost - 現在のブースト メタ ステート マシン (MSM) サブステートにデータを渡す方法
次の例では、現在の実行がまだ substate1 にある間に、substate1 に継続的にデータを渡し、そのデータに基づいて Event3 または Event1 を送信します。MSM は (process_event()) を使用したイベントの送信のみをサポートしているようですが、現在の状態にデータを継続的に送信する方法がわかりません。
出力:
c++ - ブースト msm サブサブステートマシン
boost::msm を使用してサブサブステートマシンを実装する際に問題があります。ここでコードを最小限に抑えようとしています...
Test.cpp:
StateMachineA は StateMachineA.h で定義されています
StateMachineB には、まったく同じコードを使用して StateMachineC が含まれています (B を C に置き換えます...)。
StateMachineC を StateMachineA のサブマシンとして配置すると (StateMachineB を省略すると)、正常に動作します。C を含めずに A -> B についても同じように動作します。ステート マシンの順序を変更すると (A -> C -> B)、同じエラーが発生します。要約すると、2 つのステート マシンのすべての組み合わせが機能しており、3 つのステート マシンのすべての組み合わせが失敗しています。SM sm1;
メイン関数にあるときにエラーが発生します。-> テンプレートの解決中ですか? その行がなければ、すべてが正常にコンパイルされます。
エラー ログは長いです (ホバリングすると Visual Studio がクラッシュするのに十分な長さです...)。最初のエラーは次のとおりです。
with ... そして約 200 の "with" 行が続きます。その後、次のような多くのエラーが発生します。
従う。
何か案は?
ありがとう!