6

コンストラクターが完了すると、無条件にA次の状態に遷移したい状態があります。これは可能ですか?BA

コンパイルしても機能しないコンストラクターからイベントを投稿しようとしました。ありがとう。

編集:これが私がこれまでに試したことです:

struct A : sc::simple_state< A, Active >
{
    public:
        typedef sc::custom_reaction< EventDoneA > reactions;
        A()
        {
            std::cout << "Inside of A()" << std::endl;
            post_event( EventDoneA() );
        }

        sc::result react( const EventDoneA & )
        {
            return transit< B >();
        }
};

これにより、次のランタイム アサーション エラーが発生します。

Assertion failed: get_pointer( pContext_ ) != 0, file /includ
e/boost/statechart/simple_state.hpp, line 459
4

1 に答える 1

5

私は自分のソリューションでOPを更新しました。ここにあるので、質問を閉じることができます。

simple_state問題は、目的の遷移を実現するためにから継承できないことです。 から継承するstate必要があります。これには、それに応じてコンストラクターを変更する必要があります。

struct A : sc::state< A, Active >
{
    public:
        typedef sc::custom_reaction< EventDoneA > reactions;
        A( my_context ctx ) : my_base( ctx )
        {
            std::cout << "Inside of A()" << std::endl;
            post_event( EventDoneA() );
        }

        sc::result react( const EventDoneA & )
        {
            return transit< B >();
        }
};
于 2011-11-14T19:45:13.683 に答える