我正在創建一個Boost MSM狀態機,其中一些狀態具有其自己的子狀態機。我根據Boost示例創建了一個正交區域,它允許從任何地方發佈Error事件來終止狀態機。提升MSM僞退出狀態
這很好,直到我試圖從我的一個子狀態機發布錯誤事件。什麼都沒有發生,似乎我需要使用僞退出狀態來將錯誤事件轉發給父狀態機。這最初起作用,但是當我添加更多僞退出狀態來處理來自每個子狀態機的錯誤時,一段時間後發生編譯器錯誤。不能固定它,可以有1或2個僞退出狀態,但最終它會中斷。我在每個子狀態機中沒有更多的7個轉換,而在父狀態機中沒有9個轉換。每個子狀態機包含2或3個子狀態,父狀態包含6.
有沒有人知道爲什麼會發生這種情況?我嘗試過交換轉換,似乎沒有錯誤的具體條目。不明白爲什麼可能會有衝突,因爲州名是由父類限定的。是否因爲你應該只有一個僞退出,即使我有不同的事件觸發它?或者它只是我的編譯器?
以下是錯誤:
error C2664: 'boost::mpl::assertion_failed' : cannot convert parameter 1 from 'boost::mpl::failed ************(__thiscall boost::mpl::push_front_impl<Tag>::apply<Sequence,T>::REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST::* ***********)(Sequence)' to 'boost::mpl::assert<false>::type'
任何想法?謝謝。