6

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

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

编辑:这是我迄今为止尝试过的:

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
4

1 回答 1

5

我已经用我的解决方案更新了我的 OP,在这里我可以结束这个问题。

问题是您无法继承 fromsimple_state以实现所需的转换,您必须继承 from 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 >();
        }
};
于 2011-11-14T19:45:13.683 回答