State Machine Design in C++
撰写时间:2017 年 10 月 19 日星期四
https://www.codeproject.com/Articles/1087619/State-Machine-Design-in-Cplusplus
状态机编程是程序设计模式之一,要求设计的程序能在各种状态下被外部事件和内部事件触
发后跳转到其他状态,外部事件需调用函数进行触发,内部事件在当前状态执行完后自动触发。
如下图所示,总共有 4 个状态:Idle、Start、ChangeSpeed、Stop;2 个外部事件:
SetSpeed、Halt;1 个内部事件:无标示。程序运行后会处于某状态,但无状态执行。
.h 文件
(1)将需要定义的状态通过 StateMachine 派生类,需要定义的事件数据通过 EventData 进行派生
struct 类;
(2)在 EventData 派生类中定义需要使用的数据;
(3)在 StateMachine 派生类中定义构造函数,被用户调用的 public 接口,private 的 N 种枚举的
状态、状态函数和状态表。
ST_MAX_STATES 被内部定义状态总个数;
状态函数中函数参数只能使用 EventData 或派生事件数据,表示无数据或有数据需要传
递,且返回值都为 void;