【问题标题】:In Boost.Statechart, what's the difference between state and simple_state?在 Boost.Statechart 中,state 和 simple_state 有什么区别?
【发布时间】:2011-09-25 15:40:20
【问题描述】:

在使用 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&lt;&gt; 而不是simple_state&lt;&gt; 作为我的状态的基类有什么不同或影响?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!刚刚在此处的文档中找到它:boost.org/doc/libs/1_46_1/libs/statechart/doc/…,其中指出:“state 的直接和间接子类型必须提供与 state 构造函数具有相同签名的构造函数,转发上下文参数。”
    猜你喜欢
    • 2015-03-15
    • 2012-06-30
    • 1970-01-01
    • 2018-10-03
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多