Используя диаграмму состояния 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 >();
}
};