Увеличьте вызов MSM .process_event в ортогональной области externalSM из субмашиныC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Увеличьте вызов MSM .process_event в ортогональной области externalSM из субмашины

Сообщение Anonymous »

Я реализовал изображенный конечный автомат в качестве минимального примера в boost::msm. Код можно просмотреть здесь: https://wandbox.org/permlink/tIhZao8YGhJvPMfF
Изображение

Как показано в коде ниже, я хочу вызвать event2 из "someAction", который отлично работает при вызове someAction. event4 из конечного автомата верхнего уровня «MainMachine». Однако при вызове события 3 изнутри субмашины срабатывает только нет ответа на переход субмашины (или утверждение времени выполнения завершается сбоем, если на субмашине нет ответа на переход). Я ожидал, что событие event2 будет ссылаться на таблицу переходов конечного автомата верхнего уровня, однако это, похоже, не работает, потому что someAction получает ссылку только на SubMachine FSM.
Каким будет лучший способ инициировать события в ортогональной области конечного автомата верхнего уровня внутри действий, вызываемых из Submachine?
struct someAction
{
template
void operator()(EVT const& evt,
FSM& fsm,
SourceState& src,
TargetState& tgt) const
{
fsm.process_event(event2());
std::cout

Подробнее здесь: https://stackoverflow.com/questions/675 ... submachine
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»