状态机的实现!请各位高手帮忙!
米克贝瑞 2006-09-08 09:53:52 要实现一个状态机类,有事件触发的时候,想通过查状态表去执行动作函数,实现状态的迁移。大概的代码如下:
#define state1
#define state1
#define state1
#define event1
#define event2
#define event3
Class FSM
{
public :
run(event) //提供给外部调用的函数,执行状态机
private:
action1(); //动作函数
action1();
action1();
private:
statetable //状态表
}
状态表的存储结构应该是下面这样:
statetable=
{{state1(初始状态),event1(事件),action1(动作函数指针),state2(目标状态)},
{state2(初始状态),event2(事件),action2(动作函数指针),state3(目标状态)},
{state3(初始状态),event3(事件),action3(动作函数指针),state1(目标状态)},
}
上面是一些伪代码。实现过程中我遇到的问题是:
1:statetable应该用一个什么数据格式去存储?怎么实现?
2:函数指针怎么去存储和调用?因为这里是类的成员函数,对与这样的指针函数不知道怎么去处理。
请各位高手帮忙了!谢谢!