在使用Boost.Statechart实现状态机时,我遇到了一个问题,即尝试从其构造函数访问simple_state
的外部上下文。 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<>.
除了显然能够从其构造函数访问外部上下文之外,使用state<>
而不是simple_state<>
作为我的状态的基类有什么不同或含义?
答案 0 :(得分:3)
您可以通过州&lt;&gt;进行其他一些操作。派生的构造函数,你不能从simple_state&lt;&gt;派生的构造函数。州级文档中有一个列表。我发现发布事件是从州&lt;&gt;得到的最大好处。
自从我使用它已经有一段时间了,但我不记得有任何影响,除了你必须为从状态派生的每个类(在docs中说明)实现转发构造函数,作为state&lt;&gt;源自simple_state&lt;&gt;。