c – 使用Boost状态图,我如何无条件地转换到状态?

我有一个状态A,一旦A的构造函数完成,我就无条件地转换到下​​一个状态B.这可能吗?

我尝试从构造函数发布一个事件,即使它编译也不起作用.谢谢.

编辑:这是我到目前为止所尝试的:

struct A : sc::simple_state< A,Active >
{
    public:
        typedef sc::custom_reaction< EventDoneA > reactions;
        A()
        {
            std::cout << "Inside of A()" << std::endl;
            post_event( EventDoneA() );
        }

        sc::result react( const EventDoneA & )
        {
            return transit< B >();
        }
};

这会产生以下运行时断言失败:

Assertion Failed: get_pointer( pContext_ ) != 0,file /includ
e/boost/statechart/simple_state.hpp,line 459

解决方法

我用我的解决方案更新了我的OP,在这里我可以关闭这个问题.

问题是你不能从simple_state继承来实现所需的转换,你必须从state继承,然后要求你相应地修改构造函数.

struct A : sc::state< A,Active >
{
    public:
        typedef sc::custom_reaction< EventDoneA > reactions;
        A( my_context ctx ) : my_base( ctx )
        {
            std::cout << "Inside of A()" << std::endl;
            post_event( EventDoneA() );
        }

        sc::result react( const EventDoneA & )
        {
            return transit< B >();
        }
};

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...