3

在使用 Boost.Statechart 实现状态机时,我遇到了一个问题,原因是尝试simple_state从其构造函数访问 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<>.

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

4

1 回答 1

5

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

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

于 2011-06-30T15:51:57.870 回答