Я признаю, что это не здорово, но
#ifdef DEBUG
typedef AnotherState StartingState;
#else
typedef ClosedState StartingState;
#endif
struct BoostStateMachine : sc::state_machine<BoostStateMachine, StartingState > {...
РЕДАКТИРОВАТЬ комментарий к адресу
#ifndef INITIAL_STATE
#define INITIAL_STATE ClosedState
#endif
struct BoostStateMachine : sc::state_machine<BoostStateMachine, INITIAL_STATE > {...
, конечно, это означает, что вам нужно перекомпилировать для каждого теста = [
Мы могли бы попробовать следующее:
typedef<class InitialState>
struct StateMachine : sc::state_machine< typename /*?*/ StateMachine<InitialState>, InitialState > {...}
typedef StateMachine<ClosedState> BoostStateMachine; //default case
#ifdef DO_TESTS
...
StateMachine<AnotherState> astate1;
...
StateMachine<AnotherState2> astate2;
...
StateMachine<AnotherState3> astate3;
...
#endif
Это, конечно, не помогает, когда это подсостояние, которое должно запускаться в другом состоянии.Но применимо то же самое:
typedef <typename InitialChild>
struct ClosedState : sc::simple_state< ClosedState<InitialChild>, BoostStateMachine, InitialChild > {...};
или что-то в этом роде.Я уже делал шаблонные состояния (чтобы у меня были общие последовательности подсостояний), и это королевская PITA для отладки (более того, для остальных диаграмм состояний).