大佬教程收集整理的这篇文章主要介绍了c – 使用转换来提升状态图传递参数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
// -------------------------------- // | | // | O Project | // | | | // | v | // | ---------------------------- | // | | | | // | | Unloaded | | // | ---------------------------- | // | | ^ | // | | EvLoad | EvUnload |<-----O // | v | | // | ---------------------------- | // | | | | // | | Loaded | | // | ---------------------------- | // | | ^ | // | | | EvLoad | // | ----- | // --------------------------------
但是我如何将参数传递给州,例如文件名?
如果我将文件名存储在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>(); } };
还有更好的选择吗?
以上是大佬教程为你收集整理的c – 使用转换来提升状态图传递参数全部内容,希望文章能够帮你解决c – 使用转换来提升状态图传递参数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。