私のアプリケーションでは、最後の状態、または最後の呼び出しの状態を知る必要がある一連のコールバックを呼び出す必要があります。単純なインスタンスは、2 つの連続する呼び出し間の時間差です。
私は、C++ の関数オブジェクトがそれを行う一般的な方法であることを知っています。しかし、私は初心者で、このスキーマを設定する方法がわかりません。ヘルプや特定の簡単なコード例をいただければ幸いです。
operator() を実装するクラスを作成するだけです。例えば、
class F {
int state;
public:
int operator()(/*any parameters would go here*/){
return state++;
}
F() : state(0) {}
};
次に、呼び出し可能で状態を保持するインスタンスを作成および作成できます。
F f;
f(); //returns 0
f(); //returns 1
State の優れたフレームワークが必要な場合は、FSM を使用してください。のような人気のあるものはほとんどありません:
http://boost-extension.redshoelace.com/docs/boost/fsm/doc/reference.html
と
http://www.boost.org/doc/libs/1_51_0/libs/msm/doc/HTML/index.html
初心者には少し複雑ですが、多くのことを学ぶことができます。独自のダミー バージョンを実装することもできます (それほど複雑ではありません)。
Fsms は、クラスが 20 の状態を持つことができる場合、組み込みの世界で非常に役立ちます。