내 상태의 on_entry 템플릿 기능 중 하나 내부 is_flag_active() 함수를 사용하고 싶습니다 :Boost.MSM on_entry 내부에서 is_flag_active를 사용하는 방법?
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
를, 나는 나는 front_end의 is_flag_를 사용하는 경우
StAMFODirector backEnd;
backEnd.start();
processEvent(backEnd,EvBladeDown());
processEvent(backEnd,EvMaster());
if(backEnd.is_flag_active<FlagMaster>()){ // OK
_LOG_DEBUG("Flag Master active");
}
내가 컴파일러 에로을 얻을 : 내가 처음 상태 머신 (state machine)를 선언하는 경우, 나는 is_flag_active를 사용할 수 있음을 의미 r 다시 (msm :: back :: state_machine에서 그런 기능 없음).
on_entry와 함께 is_flag_active를 사용하는 방법에 대한 아이디어가 있으십니까? 아니면 가능하지 않은 경우 대안이 있습니까? 어떤 도움
감사합니다, 가보
감사합니다. 덕분에 많은 도움이되었습니다. –