在Boost.Statechart中,state和simple_state有什么区别?

drf*_*lat 4 c++ state-machine boost-statechart

simple_state在使用 Boost.Statechart 实现状态机时,我遇到了一个因尝试从构造函数访问 a 的外部上下文而产生的问题。中的一条评论simple_state.hpp告诉我:

    // This assert fails when an attempt is made to access an outer 
    // context from a constructor of a state that is *not* a subtype of
    // state<>. To correct this, derive from state<> instead of
    // simple_state<>.
Run Code Online (Sandbox Code Playgroud)

除了显然能够从其构造函数访问外部上下文之外,使用state<>而不是simple_state<>作为我的状态的基类有什么区别或含义?

tin*_*man 5

您可以从 state<> 派生构造函数执行许多其他操作,而从 simple_state<> 派生构造函数无法执行这些操作。文档中有一个状态类的列表。我发现发布事件是从状态 <> 派生的一大好处。

我已经有一段时间没有使用它了,但我不记得有任何影响,除了你必须为从 state 派生的每个类(文档中所述)实现转发构造函数,因为 state<> 是从 simple_state< 派生的>。