良くないことは認めますが
#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です(残りのステートチャートのように)。