boost 里面有状态机了_有限状态机,boost::msm

本文介绍了如何使用Boost库中的Meta State Machine (MSM)组件来创建有限状态机。通过示例展示了基本和eUML前端的不同实现,强调了状态、事件和动作的概念,并给出了两个状态机的代码实现:一个简单的两状态机和一个灯泡开关状态机。
摘要由CSDN通过智能技术生成

一个简单的有限状态机如图所示:

0818b9ca8b590ca3270a3433284dd417.png

状态机几个要素: 状态state、事件event、动作action。这个状态机有两个状态,State1状态,和结束状态, 在Event1发生时会触发action(或者默认没有action),从而状态发生迁移。

boost的状态机库(Boost.MetaStateMachine )分为 back-end 和 front-end; 根据 front-end 的不同有三种实现,而 back-end 只有一种实现。

basic front-end

function front-end

eUML front-end

basic front-end 和 funciton front-end 都是通过创建类,继承类,定义成员变量来实现; 而 eUML front-end 是通过重用UML状态机,利用一些c++宏来实现的,感觉比较代码清晰简洁(见链接)

下列代码利用 function front-end 来实现上述状态机:

#include

#include

#include

#include

namespace {

namespace msm = boost::msm;

namespace msmf = boost::msm::front;

namespace

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值