다음 코드는 컴파일에 실패 :boost :: statechart : 어떤 상태를 지정하지 않고 두 상태의 하위 상태를 정의하는 방법?
namespace sc = boost::statechart;
class Active;
class FSM : public sc::state_machine< FSM, startup>
{
};
class ev_1 : public sc::event<ev_1> {};
class ev_2 : public sc::event<ev_2> {};
class Active : public sc::simple_state< Active, FSM >
{
public:
typedef boost::mpl::list<
sc::custom_reaction<ev_1>,
sc::custom_reaction<ev_2>
> reactions;
sc::result react(const ev_1 &);
sc::result react(const ev_2 &);
};
class state_1 : public sc::simple_state< state_1, Active >
{
public:
state_1(){};
~state_1(){};
};
class state_2 : public sc::simple_state< state_2, Active >
{
public:
state_2(){};
~state_2(){};
};
sc::result startup::react(const ev_1 &)
{
return transit<state_1>();
}
sc::result startup::react(const ev_2 &)
{
return transit<state_2>();
}
문제는 활성 상태가 정의 자녀 상태를 지정해야 할 것 같다. 다음과 같이하면 :
class Active : public sc::simple_state< Active, FSM, state_1 > { ... };
편집 결과가 성공적으로 표시됩니다. 기본 상태를 지적하지 않도록 할 수 있습니까?
P. 필자가 필수적으로 발견 한 컴파일 오류의 부분은 다음과 같습니다 : simple_state.hpp:388: error: invalid application of ‘sizeof’ to incomplete type ‘boost_1_49_0::STATIC_ASSERTION_FAILURE<false>’
하지만 많은 말을하지는 않습니다.
"simple_state.hpp : 388"행으로 이동하여 주석을보십시오. –