我有一个状态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 >(); } };