0

我想在状态之间共享一些东西,例如模式变量。我将它保存到状态机。但是,我什至无法访问它的值。

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 时是如此无用。

4

0 回答 0