3

組み込みC++アプリケーションインターフェイスに階層型FSMを使用しています。小さな関数を使用して、特定の州間イベントをトリガーできるかどうかを判断し、データベースに変更を加えるために使用したいと思います。ただし、州ごとに異なるイベント関数を使用して新しいクラスを作成することも困難です。コールバックとしてそれらへのポインタを設定するように。(ここでは300の関数について話しています。)

C ++がラムダ関数をサポートしている場合はそれらを使用しますが、プロジェクトアーキテクチャにあまり重点を置いていないため、ライブラリの高度な統合(ブーストなど)や組み込みを必要とするサードパーティのソリューションを使用することには消極的です。追加のプリプロセッサステップの。

何か案は?

4

3 に答える 3

2

実際、Boost/TR1 ライブラリを使用すると、Lambda 関数のサポートがあります。詳細については、Boost の Web サイトを参照してください。

于 2008-12-02T18:14:25.240 に答える
0

新しいC++0x標準は、完成と受け入れに近づいています。来年導入されると、C++09になるはずです。この標準には、言語に直接Lambda関数が含まれ、類似のBoostライブラリの必要性がなくなります。Visual Studio2010のテクノロジプレビューのC++コンパイラは、VisualC++チームブログに従ってLambda関数をすでにサポートしています。

または、このwikiに示すように、ロジックのLuaバインディングを作成し、テーブルを使用してFSMを処理することもできます。これは非常に柔軟なソリューションであり、C++プロジェクトを再コンパイルせずにFSMを微調整できます。また、Lambda関数(およびクロージャ)はLuaの下でネイティブで安定しています。Luaコルーチンも、FSMの実装を簡素化するために調査する価値があります。

于 2008-12-02T18:58:38.070 に答える
0

Qt のQStateMachineを見たことがありますか? 何かインスピレーションを与えてくれるかもしれません。

于 2011-04-23T13:33:40.350 に答える