Я хочу поделиться чем-то между состояниями, например, с переменной режима. Я сохраняю это в конечный автомат. Тем не менее, я не могу даже получить доступ к его стоимости.
struct InitState;
struct MyFsm : boost::statechart::state_machine<MyFsm, InitState> {
uint8_t mode;
MyFsm() : mode(0) {
std::cout << "mode = " << mode << std::endl;
}
};
Вышеупомянутый ctor никогда не печатает значение.
struct InitState : boost::statechart::simple_state<InitState, MyFsm > {
typedef boost::mpl::list<
boost::statechart::custom_reaction<Event1>
> reactions;
boost::statechart::result react(const Event1& e) {
context< MyFsm >().mode = 2; // This does NOT work!
}
};
Назначение также терпит неудачу выше.
Кто-нибудь знает, как заставить это работать?
Или, может быть, как лучше распределить переменные между состояниями?
Или, если boost :: statechart слишком плох для использования? Документ Boost настолько бесполезен при объяснении его API.
Задача ещё не решена.
Других решений пока нет …