nic*_*ckb 6 c++ boost boost-statechart
我有一个状态,一旦 的构造函数完成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 >();
}
};
Run Code Online (Sandbox Code Playgroud)
这会产生以下运行时断言失败:
Assertion failed: get_pointer( pContext_ ) != 0, file /includ
e/boost/statechart/simple_state.hpp, line 459
Run Code Online (Sandbox Code Playgroud)
我已经用我的解决方案更新了我的 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 >();
}
};
Run Code Online (Sandbox Code Playgroud)