c – 使用Boost状态图,我如何无条件地转换到状态?
发布时间:2020-12-16 07:27:27 所属栏目:百科 来源:网络整理
导读:我有一个状态A,一旦A的构造函数完成,我就无条件地转换到下??一个状态B.这可能吗? 我尝试从构造函数发布一个事件,即使它编译也不起作用.谢谢. 编辑:这是我到目前为止所尝试的: struct A : sc::simple_state A,Active { public: typedef sc::custom_reactio
我有一个状态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 >(); } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |