青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-381  評論-37  文章-0  trackbacks-0

來自:http://www.shnenglu.com/shanoa/archive/2009/05/30/86143.html
接觸了boost的狀態機,發現不是想象中的那么好用,在一些地方還得用上mpl庫里的東西,由于對模板元編程不是很熟練,搞了好些天才算弄明白這該死的mpl::list的原理和用法。
boost的狀態機是屬于靜態鏈接的狀態機,也就是說,它的圖結構是編譯期間就確定了的,在運行時不可以動態配置。所以,它的用途是有一定局限性的,但在一般情況下,它不僅很通用,而且在你會用并熟練地情況下,還會很好用,用起來很舒服,邏輯也很合理。下面就是一段代碼,當然也是借鑒了別人的東西,自己修改了一下,在MainState中添加了一個Transition做了測試,因為此前我還不知道一個狀態如何包含多個Transition,呵呵,原來是用mpl::list來做。至于這個狀態機的入門教程,網上隨處可見的三部曲:《boost 狀態機入門教程》說得很清楚。

  1 #include <iostream>
  2 #include <ctime>
  3 
  4 #include <boost/statechart/transition.hpp>
  5 #include <boost/statechart/event.hpp>
  6 #include <boost/statechart/state_machine.hpp>
  7 #include <boost/statechart/simple_state.hpp>
  8 
  9 namespace sc = boost::statechart;
 10 
 11 
 12 
 13 class EvtStartStop : public sc::event<EvtStartStop>{};
 14 class EvtReset : public sc::event<EvtReset>{};
 15 class EvtGo : public sc::event<EvtGo>{};
 16 
 17 
 18 class MainState;
 19 class StopState;
 20 class RunState;
 21 class TwoState;
 22 
 23 class Machine : public sc::state_machine<Machine, MainState>
 24 {};
 25 
 26 
 27 
 28 
 29 
 30 
 31 class MainState : public sc::simple_state<MainState, Machine, StopState>
 32 {
 33 public:
 34     typedef sc::transition<EvtReset, MainState> reactReset;
 35     typedef sc::transition<EvtGo, TwoState> reactGo;
 36     typedef boost::mpl::list<reactReset, reactGo> reactions;
 37 
 38     MainState(void){
 39         std::cout<<"進入MainState"<<std::endl;
 40         mTime = 0;
 41     }
 42 
 43     ~MainState(void){
 44         std::cout<<"退出MainState"<<std::endl;
 45     }
 46 
 47     double mTime;
 48 };
 49 
 50 
 51 // 該狀態屬于無用狀態,用于測試mpl::list的多transition用法
 52 class TwoState : public sc::simple_state<TwoState, Machine>
 53 {
 54 public:
 55     typedef sc::transition<EvtGo, MainState> reactions;
 56 
 57     TwoState(void){
 58         std::cout<<"進入TwoState"<<std::endl;
 59     }
 60 
 61     ~TwoState(void){
 62         std::cout<<"退出TwoState"<<std::endl;
 63     }
 64 };
 65 
 66 
 67 class StopState : public sc::simple_state<StopState, MainState>
 68 {
 69 public:
 70     typedef sc::transition<EvtStartStop, RunState> reactions;
 71     StopState(void){
 72         std::cout<<"進入StopState"<<std::endl;
 73     }
 74 
 75     ~StopState(void){
 76         std::cout<<"退出StopState"<<std::endl;
 77     }
 78 };
 79 
 80 class RunState : public sc::simple_state<RunState, MainState>
 81 {
 82 public:
 83     typedef sc::transition<EvtStartStop, StopState> reactions;
 84     RunState(void){
 85         std::cout<<"進入RunState"<<std::endl;
 86         mStartTime = 0;
 87     }
 88 
 89     ~RunState(void){
 90         std::cout<<"退出RunState"<<std::endl;
 91         context<MainState>().mTime += std::difftime(std::time(0), mStartTime);
 92     }
 93 
 94     std::time_t mStartTime;
 95 };
 96 
 97 
 98 int _tmain(int argc, _TCHAR* argv[])
 99 {
100     Machine mc;
101     mc.initiate();
102 
103     mc.process_event(EvtStartStop());
104     mc.process_event(EvtStartStop());
105     mc.process_event(EvtReset());
106     mc.process_event(EvtGo());
107     mc.process_event(EvtGo());
108 
109     return 0;
110 }
posted on 2010-10-03 19:10 小王 閱讀(1016) 評論(0)  編輯 收藏 引用 所屬分類: Boost
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合成人婷婷小说| 久久免费视频一区| 亚洲人成网在线播放| 久久综合中文| 亚洲人成在线播放| 亚洲高清一二三区| 欧美高清在线视频观看不卡| 99精品视频一区二区三区| 99精品国产热久久91蜜凸| 国产精品成人一区二区三区夜夜夜| 亚洲一级在线观看| 欧美一区二区三区播放老司机| 国产亚洲精品成人av久久ww| 美日韩精品免费观看视频| 欧美www视频| 亚洲影院高清在线| 欧美在线视频观看免费网站| 136国产福利精品导航网址| 亚洲欧洲一区二区三区| 欧美日韩久久| 欧美在线黄色| 你懂的国产精品| 亚洲网站在线看| 久久精品国产69国产精品亚洲| 亚洲高清在线视频| 一二三区精品福利视频| 国内久久精品| 一本久久综合亚洲鲁鲁五月天| 国产伦精品一区二区三区视频孕妇| 久久免费视频这里只有精品| 欧美人交a欧美精品| 欧美中文字幕第一页| 免费在线看成人av| 欧美在线视频导航| 欧美日韩成人在线| 浪潮色综合久久天堂| 欧美视频在线看| 欧美电影打屁股sp| 国产亚洲欧美aaaa| 日韩一二三区视频| 亚洲国产日韩综合一区| 亚洲天堂成人| aa级大片欧美三级| 久久久久久久91| 小处雏高清一区二区三区| 欧美激情小视频| 免费不卡亚洲欧美| 国产亚洲精品久久久久婷婷瑜伽| 99av国产精品欲麻豆| 亚洲精品中文字幕有码专区| 久久精品久久99精品久久| 亚洲午夜在线| 欧美日韩另类字幕中文| 欧美刺激午夜性久久久久久久| 国产欧美另类| 亚洲一区网站| 欧美亚洲免费在线| 国产精品成人免费| 正在播放日韩| 午夜亚洲福利在线老司机| 欧美日韩免费在线| 亚洲日本中文字幕区| 亚洲精品永久免费精品| 美女诱惑一区| 欧美激情网友自拍| 亚洲高清久久| 欧美国产日韩亚洲一区| 亚洲高清不卡在线观看| 亚洲日本一区二区三区| 美国成人直播| 亚洲激情网站| 一区二区三区.www| 欧美日韩一级黄| 最新亚洲一区| 中文有码久久| 国产精品久久久久久久久| 亚洲无线观看| 久久av资源网站| 国内精品视频一区| 免费不卡亚洲欧美| 亚洲免费观看高清在线观看| 亚洲一区二区在线观看视频| 国产精品久久一卡二卡| 亚洲欧美亚洲| 久久综合国产精品| 亚洲精品一区二区三区婷婷月| 欧美精品首页| 亚洲午夜av在线| 久久精品国产精品亚洲综合| 在线观看日韩精品| 欧美日本国产视频| 性8sex亚洲区入口| 欧美福利一区二区| 亚洲一二三区视频在线观看| 国产欧美视频一区二区| 久久aⅴ国产紧身牛仔裤| 欧美国产精品久久| 亚洲欧美一区二区三区久久 | 亚洲国产第一页| 一区二区冒白浆视频| 国产精品色网| 免费日韩成人| 亚洲一区在线免费| 欧美成人亚洲成人| 亚洲欧美日韩中文播放| 亚洲成人在线免费| 国产精品久久久久久久久免费樱桃| 午夜欧美视频| 亚洲精品一区二区三区不| 午夜视频一区二区| 亚洲欧洲综合| 国产伊人精品| 欧美午夜精品久久久久久人妖 | 亚洲欧美视频一区二区三区| 老司机精品视频一区二区三区| 亚洲美女色禁图| 狠狠色综合一区二区| 欧美日韩专区| 蜜桃av噜噜一区| 欧美一区二区三区成人| 一区二区av| 亚洲欧洲精品一区| 蜜臀久久99精品久久久画质超高清| 亚洲一区在线免费| 日韩视频在线观看| 亚洲第一精品夜夜躁人人躁| 国产精品视频精品视频| 欧美日韩影院| 欧美黑人在线观看| 猛男gaygay欧美视频| 久久精品成人一区二区三区| 亚洲在线免费观看| 亚洲视频香蕉人妖| 一本大道久久a久久精品综合| 欧美激情精品| 欧美电影资源| 免费观看在线综合色| 久久人人看视频| 欧美在线中文字幕| 欧美一级视频| 欧美一区二区视频在线观看2020| 亚洲永久免费精品| 亚洲视频专区在线| 亚洲天堂成人在线观看| 国产精品99久久久久久白浆小说| 日韩一级在线| 99亚洲伊人久久精品影院红桃| 亚洲精品网站在线播放gif| 亚洲第一页自拍| 最新高清无码专区| 亚洲肉体裸体xxxx137| 亚洲美女在线视频| 一本色道久久综合精品竹菊 | 国产日韩精品电影| 国产啪精品视频| 国产亚洲精品bv在线观看| 国产亚洲精品美女| 在线免费观看日韩欧美| 亚洲国产合集| 一本色道久久综合精品竹菊| 亚洲一区日韩在线| 欧美一区三区三区高中清蜜桃| 久久精品五月婷婷| 老司机一区二区三区| 亚洲高清资源综合久久精品| 91久久综合亚洲鲁鲁五月天| 夜夜嗨av色综合久久久综合网| 亚洲一区尤物| 久久一区视频| 欧美日韩另类丝袜其他| 国产视频一区三区| 亚洲黄色在线| 亚洲午夜视频| 浪潮色综合久久天堂| 亚洲国产日韩欧美| 亚洲欧美日韩系列| 欧美大片一区二区| 国产精品v欧美精品v日韩精品| 国产一区二区三区免费在线观看| 在线看欧美视频| 亚洲一区二区免费视频| 久久精品国产亚洲一区二区三区| 女仆av观看一区| 亚洲视频视频在线| 久久亚洲综合色| 国产精品美女主播| 在线精品亚洲| 欧美亚洲一区二区三区| 亚洲高清不卡av| 欧美亚洲在线| 欧美午夜精品电影| 亚洲国产另类精品专区 | 亚洲国产高清高潮精品美女| 亚洲影院高清在线| 欧美激情日韩| 欧美一级在线亚洲天堂| 欧美日韩亚洲国产一区| 亚洲国产精品ⅴa在线观看| 欧美一级免费视频| 一本色道**综合亚洲精品蜜桃冫 |