boost状态机快速理解例程
来源:互联网 发布:java方法命名规则 编辑:程序博客网 时间:2024/05/17 06:35
//boost状态机快速理解例程,VS2005编译通过!
//参考网络上资料改写,主要目的为自己备忘用。欢迎技术交流、项目合作!
//为方便快速理解,非关键字均已修改为中文!希望能抛砖引玉!
#include "stdafx.h"
#include <Windows.h>
#include <boost/statechart/event.hpp>
#include <boost/statechart/state_machine.hpp>
#include <boost/statechart/simple_state.hpp>
#include <boost/statechart/transition.hpp>
#include <iostream>
using namespace boost::statechart;//namespace sc = boost::statechart;
class 初始状态;
class 状态A;
//////////////////////事件/////////////////////////////////
class 事件A : public event<事件A>
{
public:
事件A(void)
{
std::cout << "#触发事件A" << std::endl << std::endl;
}
};
class 事件B : public event<事件B>
{
public:
事件B(void)
{
std::cout << "#触发事件B" << std::endl << std::endl;
}
};
////////////////////////////////////////////////////////////
class 状态机 : public state_machine<状态机, 初始状态>
{
public:
状态机(void)
{
std::cout << "创建 状态机" << std::endl << std::endl;
}
~状态机(void)
{
std::cout << "销毁 状态机" << std::endl << std::endl;
}
};
////////////////////////////////////////////////////////////
/////////////////////初始状态//////////////////////////////////
class 初始状态 : public simple_state<初始状态, 状态机>
{
public:
//reactions为关键字!
typedef transition<事件A, 状态A> reactions;//当发生事件A时,切换状态至状态A
初始状态(void)
{
std::cout << "进入 初始状态" << std::endl;
}
~初始状态(void)
{
std::cout << "离开 初始状态" << std::endl;
}
};
/////////////////////状态A//////////////////////////////////
class 状态A : public simple_state<状态A, 状态机>
{
public:
//reactions为关键字!
typedef transition<事件B, 初始状态> reactions;//当发生事件B时,切换状态至状态B
状态A(void)
{
std::cout << "进入 状态A" << std::endl;
}
~状态A(void)
{
std::cout << "离开 状态A" << std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
状态机 状态机实例;
状态机实例.initiate();
状态机实例.process_event(事件A());
状态机实例.process_event(事件B());
return 0;
}
//参考网络上资料改写,主要目的为自己备忘用。欢迎技术交流、项目合作!
//为方便快速理解,非关键字均已修改为中文!希望能抛砖引玉!
#include "stdafx.h"
#include <Windows.h>
#include <boost/statechart/event.hpp>
#include <boost/statechart/state_machine.hpp>
#include <boost/statechart/simple_state.hpp>
#include <boost/statechart/transition.hpp>
#include <iostream>
using namespace boost::statechart;//namespace sc = boost::statechart;
class 初始状态;
class 状态A;
//////////////////////事件/////////////////////////////////
class 事件A : public event<事件A>
{
public:
事件A(void)
{
std::cout << "#触发事件A" << std::endl << std::endl;
}
};
class 事件B : public event<事件B>
{
public:
事件B(void)
{
std::cout << "#触发事件B" << std::endl << std::endl;
}
};
////////////////////////////////////////////////////////////
class 状态机 : public state_machine<状态机, 初始状态>
{
public:
状态机(void)
{
std::cout << "创建 状态机" << std::endl << std::endl;
}
~状态机(void)
{
std::cout << "销毁 状态机" << std::endl << std::endl;
}
};
////////////////////////////////////////////////////////////
/////////////////////初始状态//////////////////////////////////
class 初始状态 : public simple_state<初始状态, 状态机>
{
public:
//reactions为关键字!
typedef transition<事件A, 状态A> reactions;//当发生事件A时,切换状态至状态A
初始状态(void)
{
std::cout << "进入 初始状态" << std::endl;
}
~初始状态(void)
{
std::cout << "离开 初始状态" << std::endl;
}
};
/////////////////////状态A//////////////////////////////////
class 状态A : public simple_state<状态A, 状态机>
{
public:
//reactions为关键字!
typedef transition<事件B, 初始状态> reactions;//当发生事件B时,切换状态至状态B
状态A(void)
{
std::cout << "进入 状态A" << std::endl;
}
~状态A(void)
{
std::cout << "离开 状态A" << std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
状态机 状态机实例;
状态机实例.initiate();
状态机实例.process_event(事件A());
状态机实例.process_event(事件B());
return 0;
}
- boost状态机快速理解例程
- 状态机理解
- [转]boost 状态机学习
- Boost状态机--中级篇
- boost复合状态机
- BOOST Statechart 状态机若干注意事项
- 状态机设计模式理解
- 快速排序例程
- Boost-(MSM)元状态机文档翻译-前言
- 游戏角色并行状态机之boost::msm
- C++学习 Boost状态机说明statechart
- OpenGL状态机的概念理解
- 状态机的三段 理解
- Boost中Echo的tcp例程
- boost仅运行一次的例程
- boost::spirit快速参考
- Boost快速入门
- QT线程例程之理解
- 面试题 - 5只猴子来分桃子,问总共有多少桃子
- oracle 定义表和基础函数操作
- HOJ 3087 Discover's Problem I
- sum problem
- iPAD短期内竞争对手难以超越
- boost状态机快速理解例程
- 面试题: 20年后农场中有多少头牛?
- Android 用户界面---输入事件(Input Events)
- JDBC 连接数据库方法小结
- csdn新手
- 使用NSIS制作多语言的安装程序
- 拷贝构造函数
- poj 1163 The Triangle
- csdn新手