C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用转换来提升状态图传递参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试学习boost :: statechart.

我想制作一个加载文件的小应用程序.

//  --------------------------------
// |                                |
// |           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>();
     }
};

还有更好的选择吗?

解决方法

在我输入下面的建议后,我在谷歌搜索期间找到了 this link,这说明你正在做的事情(发布内部事件或用数据重新发布事件)是这样做的.那是来自Boost状态图的作者,那么谁来争论呢?
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的c – 使用转换来提升状态图传递参数全部内容,希望文章能够帮你解决c – 使用转换来提升状态图传递参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: