c – 使用转换来提升状态图传递参数
发布时间:2020-12-16 10:29:45 所属栏目:百科 来源:网络整理
导读:我正在尝试学习boost :: statechart. 我想制作一个加载文件的小应用程序. // --------------------------------// | |// | O Project |// | | |// | v |// | ---------------------------- |// | | | |// | | Unloaded | |// | ----------------------------
我正在尝试学习boost :: statechart.
我想制作一个加载文件的小应用程序. // -------------------------------- // | | // | O Project | // | | | // | v | // | ---------------------------- | // | | | | // | | Unloaded | | // | ---------------------------- | // | | ^ | // | | EvLoad | EvUnload |<-----O // | v | | // | ---------------------------- | // | | | | // | | Loaded | | // | ---------------------------- | // | | ^ | // | | | EvLoad | // | ----- | // -------------------------------- 但是我如何将参数传递给州,例如文件名? struct Loaded : sc::simple_state< Loaded,Project> { typedef sc::custom_reaction< EvLoad > reactions; sc::result react( const EvLoad & e ) { //load file e.path() ... return discard_event(); } } 但是当我处于Unloaded状态时,我正在调用Loaded的构造函数,我无法将参数传递给它.我提出的唯一解决方法是在转换之前重新发布事件,但这看起来有点脏. struct Unloaded : sc::simple_state< Unloaded,Project > { typedef sc::custom_reaction< EvLoad > reactions; sc::result react( const EvLoad & e ) { post_event( e ); //workaround to pass the event to the loaded state return transit<Loaded>(); } }; 还有更好的选择吗? 解决方法
在我输入下面的建议后,我在谷歌搜索期间找到了
this link,这说明你正在做的事情(发布内部事件或用数据重新发布事件)是这样做的.那是来自Boost状态图的作者,那么谁来争论呢? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读