Я хотел бы использовать функцию is_flag_active () внутри одной из шаблонных функций on_entry моего состояния:
struct StBladeDown : public msm::front::state<> {
template<class Event, class FSM>
void on_entry(Event const& event, FSM& fsm) {
if(fsm.is_flag_active<FlagMaster>()) { // ERROR
// doSomeThing();
}
}
};
Однако я получил следующую ошибку компиляции:
StOk.hpp: In member function 'void mr::mrd::amfo::StOk_::StBladeDown::on_entry(const Event&, FSM&)':
StOk.hpp:78: error: expected primary-expression before '>' token
StOk.hpp:78: error: expected primary-expression before ')' token
Однако внеконечный автомат, я имею в виду, если я сначала объявлю конечный автомат, я могу использовать is_flag_active:
StAMFODirector backEnd;
backEnd.start();
processEvent(backEnd,EvBladeDown());
processEvent(backEnd,EvMaster());
if(backEnd.is_flag_active<FlagMaster>()){ // OK
_LOG_DEBUG("Flag Master active");
}
Если я использую is_flag_ для front_end, я снова получаю ошибку компилятора (такой функции нет в msm :: back: state_machine).
Есть идеи, как использовать is_flag_active вместе с on_entry?Или, если это невозможно, есть ли альтернативы?
Спасибо за любую помощь, Габор