我想在状态之间共享一些东西,例如模式变量。我将它保存到状态机。但是,我什至无法访问它的值。
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 时是如此无用。