gpt4 book ai didi

c++ - 使用 Boost 状态图,如何无条件转换到状态?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:13 26 4
gpt4 key购买 nike

我有一个状态 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++ - 使用 Boost 状态图,如何无条件转换到状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7744441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com