我想在州之间分享一些东西,例如模式变量。我把它保存到状态机。但是,我甚至无法获得它的价值。
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的doc在解释其API方面毫无用处。