他の方法では解決できないように見えるので、これはテンプレートの質問であると確信していますが、テンプレート以外のソリューションも歓迎します。
有限ステート マシンには多数のプログラム ステートがあり、各ステートは多数のイベントに反応できます。
そこで、Event、State、FSM のクラスを定義したいと思います。FSM には状態のコレクション (おそらくベクトル、STL が組み込みシステムで問題を起こす場合はリンク リスト) があり、State にはイベントのコレクションがあります。
各状態とイベントには、ネズミイルカをデバッグするための一意の ID と名前文字列があります。
厄介なことに、ID を整数にするのではなく、列挙型の要素にしたいのです。各 FSM は、その状態とイベントに対して異なる列挙型を持っています。
これをどのようにコーディングするのが最善ですか?2 つの単純な FSM、またはそれぞれ 2 つのイベントを持つ 2 つの状態を持つ 1 つの FSm の例を挙げていただけますか?
たとえば、私が持っている場合
enum myEvents {a、b、c}; enum hisEvents {d、e、f、g};
コンストラクタ パラメータを受け入れる Event クラスを宣言できるようにしたい
(myEvents a,char *"event_a")と
(hisEvents g,char* "event_g")コンストラクターを単にオーバーロードしたくないことに注意してください。これには制限があるためです。新しいイベント列挙型が追加された場合はどうなるでしょうか。
州と同様に、FSM にそれぞれ州のリストを持たせます。
それとも、intを渡す方がはるかに簡単なのに、eventIdの列挙型を主張して、私は単に嫌悪感を抱いているだけですか?
ありがとう。
ところで、組み込みシステムでどれだけうまく機能するかについてはそれ自体が未定であるため、Boost は避けたいと思います。私は、完全に制御するために、社内で開発することを好みます。