Используя диаграмму состояния Boost, как я могу безоговорочно перейти в состояние?

У меня есть состояние A что я хотел бы перейти к следующему состоянию B безусловно, когда-то конструктор A завершено. Это возможно?

Я попытался опубликовать событие из конструктора, который не работает, даже если он компилируется. Благодарю.

Редактировать: вот что я пробовал до сих пор:

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

1 ответ

Решение

Я обновил свой ОП своим решением, вот оно, чтобы я мог закрыть вопрос.

Проблема в том, что вы не можете наследовать от 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 >();
        }
};
Другие вопросы по тегам