2011-06-30 5 views
1

Boost.Statechartを使ってステートマシンを実装すると、コンストラクタからsimple_stateという外部コンテキストにアクセスしようとすると問題が発生しました。 simple_state.hpp内のコメントは、私に語った:Boost.Statechartでは、stateとsimple_stateの違いは何ですか?

別にどうやら私の状態のための基本クラスとして state<>を使用しての代わりに、 simple_state<>にどのような違いや意味合いがあり、そのコンストラクタから外側のコンテキストにアクセスできることから
// 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<>. 

答えて

3

状態<>派生コンストラクタで行うことができない派生コンストラクタから行うことができる他の多くのことがあります。これは、simple_state <>派生コンストラクタから行うことができません。ドキュメントには、状態クラスのリストがあります。私は、投稿のイベントが州<>から派生した大きな利点であることを発見しました。

私はそれを使用してからしばらくしていますが、状態から派生した各クラスの転送コンストラクタ(ドキュメントに記載)を実装する必要はありません。 simple_state <から派生しました。

+0

ありがとうございます! http://www.boost.org/doc/libs/1_46_1/libs/statechart/doc/reference.html#ClassTemplatestateにあります。「状態<>の直接的および間接的なサブタイプは、状態<>コンストラクタと同じシグネチャを持ち、コンテキストパラメータを転送するコンストラクタです。 – drfrogsplat

関連する問題