我的轉換表和事件有問題。 讓我解釋說明問題的假設計:提升事件和狀態重用的msm問題
我有一個包含2個狀態(s0和s1)和1個子狀態機(subm1)的狀態機(myStateMachine)。
substatemachine subm1包含初始狀態'sub0'以及s1(與myStateMachine中的狀態相同)。
這是主要的轉換表:
S0-> S1上事件 'ES1'
S0-> S2上事件 'ES2'
S0-> subm1上事件 'ESUB'
這是衝鋒槍轉換表:
sub0-> S1上事件 'ES1'
現在,假設狀態S1是使用觸發它提取一些信息,即
struct s1 : public msm::front::state<>
{
template <class Event,class FSM>
void on_entry(Event const& evt,FSM& fsm)
{
evt.getEventData();
}
}
所以每一個可能轉換到S1事件需要實現getEventData()方法的情況下。
- >這是正常的!
現在我的問題是,ESUB不執行getEventData(),但顯然它應該(編譯器給出錯誤)。我不明白爲什麼。
我沒有使用ESUB轉換到s1,但我正在使用ESUB轉換到subm1,subm1包含s1,但我不能在此時訪問它。
我希望這很清楚。