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<>作为我的状态的基类有什么区别或含义?
您可以从 state<> 派生构造函数执行许多其他操作,而从 simple_state<> 派生构造函数无法执行这些操作。文档中有一个状态类的列表。我发现发布事件是从状态 <> 派生的一大好处。
我已经有一段时间没有使用它了,但我不记得有任何影响,除了你必须为从 state 派生的每个类(文档中所述)实现转发构造函数,因为 state<> 是从 simple_state< 派生的>。