Не могу скомпилировать мой машинный код

Я пытаюсь сделать конечный автомат DcuClientMachineимея два состояния — StandBy (по умолчанию) и Operating, StandBy это просто простое состояние, в то время как Operating является вложенным, имея Parsing указать как по умолчанию. EvConnecting событие предполагает StandBy -> Operating (Parsing)

#include <boost/statechart/event.hpp>
#include <boost/statechart/state_machine.hpp>
#include <boost/statechart/simple_state.hpp>
#include <boost/statechart/transition.hpp>
#include <boost/statechart/custom_reaction.hpp>

namespace sc = boost::statechart;

struct EvConnecting : sc::event<EvConnecting>{};

struct StandBy;
struct DcuClientMachine : sc::state_machine<DcuClientMachine, StandBy>{};

struct Operating;
struct Parsing;

struct StandBy : sc::simple_state<StandBy, DcuClientMachine >
{
//typedef sc::transition<EvConnecting, Operating> reactions; //(*1)

typedef sc::custom_reaction<EvConnecting> reactions; //(*2)
sc::result react( const EvConnecting & )
{
return transit< Operating >();

//return forward_event(  ); //(*3)
}

};
struct Operating : sc::simple_state<Operating, DcuClientMachine, Parsing>{};
struct Parsing : sc::simple_state<Parsing, DcuClientMachine>{};

int main()
{
return 0;
}

(* 1) и (* 2) производят
boost\statechart\simple_state.hpp(887): error C2039: 'inner_initial_list' : is not a member of 'DcuClientMachine'

Если я использую (* 3), тогда все в порядке, код скомпилирован.

Что не так с этим кодом?

Спасибо.

1

Решение

Ваше определение Parsing неправильно. Так должно быть :

struct Parsing : sc::simple_state<Parsing, Operating>{};

поскольку Parsing это подсостояние Operating,

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector