在C++中实现一个事件驱动的状态机,您可以在StateMachine类中添加事件枚举和处理事件的方法。以下是一个简单的事件驱动状态机示例:
#include <iostream>
// 定义状态枚举
enum class State {
Idle,
Running,
Paused,
Stopped
};
// 定义事件枚举
enum class Event {
Start,
Pause,
Resume,
Stop
};
class StateMachine {
private:
State currentState;
public:
StateMachine() : currentState(State::Idle) {}
void handleEvent(Event event) {
switch (event) {
case Event::Start:
start();
break;
case Event::Pause:
pause();
break;
case Event::Resume:
resume();
break;
case Event::Stop:
stop();
break;
}
}
private:
void start() {
if (currentState == State::Idle || currentState == State::Stopped) {
currentState = State::Running;