【问题标题】:How to give objects to states in a boost::statechart?如何在 boost::statechart 中将对象赋予状态?
【发布时间】:2011-02-10 18:21:40
【问题描述】:

我处于需要修改我没有编写的状态机的情况。该状态机是使用Boost Statechart 编写的。不幸的是,我发现这段代码难以理解,而编写它的人正在休假。

问题很简单,我想:我有一个变量thing,我想在其中一些状态下使用它。它代表一个需要通知事物的单一应用程序控制器。我可以将thing 提供给哪个构造函数(或其他),使其可用于机器状态?

根据这个例子声明状态:

struct Pumping : sc::state< Pumping, Purifier >
{
  Pumping( my_context ctx ) : my_base( ctx )
  {
    post_event( EvPumpingStarted() );
  }
  // ...
};

附:我希望这个问题有一个更好的标题;帮助表示赞赏。

【问题讨论】:

    标签: c++ state-machine boost-statechart


    【解决方案1】:

    听起来应该将东西传递给机器构造函数?如果是这样,最好让它成为机器的数据成员。状态可以使用 outermost_context() 函数访问机器。所以,在一个状态中,你会写出类似 outermost_context().get_thing() 的东西。

    【讨论】:

    • 对于奖励积分(如果我可以被允许劫持答案?),您将如何使用无法从其构造函数访问外部上下文的simple_states 执行此操作? (尝试这样做有什么意义,还是应该使用states 来代替?)
    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2012-01-02
    相关资源
    最近更新 更多