boost-msm

    0熱度

    1回答

    任何想法如何使用boost msm 1_60,我可以得到submachine的current_state(s)?考慮下面的代碼,描述外的狀態機,其允許(具有交替的例如兩個黃燈標準的紅,黃,綠一個又一個的)兩個不同的交通信號燈之間艇員選拔: class SMBigMom : public msmf::state_machine_def<SMBigMom> { public: SMBigMom(

    0熱度

    1回答

    我有一個狀態機是這樣的: class FsmDef : public boost::msm::front::state_machine_def<FsmDef> { private: Args args; using State = boost::msm::front::state<>; public: FsmDef(Args args) : args{args}

    0熱度

    1回答

    我有一個通用警戒條件,我想在某些情況下有條件地禁止轉換。下面是我想要做的一些C++/Pseudocode。 bool operator()(Event const& evt, FSM & fsm, SourceState& src, TargetState& tgt) { bool transition = (current_state != next_state); boo

    0熱度

    1回答

    我的問題更多的是一個架構問題。我有多個相同類型的狀態機。說 controller_type1_sm controller1; controller_type2_sm controller2; std::array<worker1_sm,10> workers1; std::array<worker2_sm,10> workers2; 現在,當一個控制器發送消息,我應該使用調度名稱或ID

    0熱度

    1回答

    我正在創建一個Boost MSM狀態機,其中一些狀態具有其自己的子狀態機。我根據Boost示例創建了一個正交區域,它允許從任何地方發佈Error事件來終止狀態機。 這很好,直到我試圖從我的一個子狀態機發布錯誤事件。什麼都沒有發生,似乎我需要使用僞退出狀態來將錯誤事件轉發給父狀態機。這最初起作用,但是當我添加更多僞退出狀態來處理來自每個子狀態機的錯誤時,一段時間後發生編譯器錯誤。不能固定它,可以有1

    2熱度

    1回答

    我正在開發一個使用boost MSM框架的狀態機。他們的教程states,boost :: any可以用作「Kleene事件」,如果當前狀態是源狀態,則允許在任何事件被觸發時轉換。然而,這對我不起作用。我只是收到「no_transition」。 這是我的示例代碼: #include <iostream> #include <boost/msm/back/state_machine.hpp>

    0熱度

    1回答

    我是新來的C++,boost和使用狀態機。 有誰知道多態boost :: msm狀態機的例子嗎? 我試圖在所提供的基本示例的過渡動作更改爲虛擬的,但所述接頭說: 未定義參考`虛表爲DerivedClass' 編輯: 錯誤是一個基本的和乏味包含/定義錯誤,通過分析代碼解決。 在仔細閱讀了基本示例之後,我意識到爲了使它具有多態性,我應該在子類中定義後端並從前端繼承。 波紋管的源文件定義多形態基本MSM

    1熱度

    1回答

    以下是對具有Boost MSM經驗的人員的一個問題。 我有一個非常大的狀態機實施了Boost MSM,最後我今天用完了50個矢量限制(有太多事件進入我的狀態機,這是無法避免的)。我創建了更高的矢量頭(vector60,vector70等),但我想整體壓縮狀態機。 問題是,MSM是否支持分層狀態機。例如(糾正我,如果我錯了),在分層狀態機中,如果事件未在特定狀態下處理,那麼該事件將被轉發到當前狀態的

    1熱度

    2回答

    我在玩http://boost-experimental.github.io/msm-lite/tutorial/index.html(標籤是針對boost-msm的,因爲沒有msm-lite的標籤,但類似的問題適用),我有一個關於設計具有許多可能輸入的狀態機的問題。 想象一下,您正在模擬電梯。除了明顯的狀態,如移動,停止,door_open,door_closed,我不知道如何模型按鈕按下(這是

    1熱度

    1回答

    在boost :: msm的文檔中,有一個沒有默認構造函數的狀態機的example。我可以將它直接從super-SM跳轉到sub-SM。但是當我從一個子SM跳到另一個子SM時,目標SM是默認構造的,我的數據已經消失。 下面是一個例子。如果不提供子狀態的默認構造函數,我無法編譯它。我是否需要在我的子SM中提供一些額外信息才能使用? 當我運行的例子,我得到: Jumping directly to S