функция — запоминание состояния переполнения стека

В моем приложении я вызываю несколько обратных вызовов, которым необходимо знать их последнее состояние или состояние последнего вызова. Простым примером является разница во времени между двумя последовательными вызовами.

Я знаю, что функциональные объекты в C ++ — это общий способ сделать это. Но я нуб и не уверен, как настроить эту схему. Любая помощь или конкретные простые примеры кода будут высоко ценится.

0

Решение

Просто создайте класс, который реализует 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
3

Другие решения

Если вы хотите хорошие рамки для государства, чем использовать 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 состояний.

0

По вопросам рекламы [email protected]