В моем приложении я вызываю несколько обратных вызовов, которым необходимо знать их последнее состояние или состояние последнего вызова. Простым примером является разница во времени между двумя последовательными вызовами.
Я знаю, что функциональные объекты в 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
Если вы хотите хорошие рамки для государства, чем использовать 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 состояний.