例にはC++を使っています。
状態を変えた時に、もう一度呼ばれるまで待たずに、
すぐに次の状態のUpdate()をしたいです。
switch文とStateパターン? で考えたいと思います。
もしも何かを読めば分かるようでしたら、リンクを貼っていただければ幸いです。
このようなことを質問せずに自分で調べられるようになりたいですが、どうするべきだったのでしょうか。
(1)switch文の場合
対応例
1. goto文で分岐の頭に戻る
2. while(1)で分岐をくくって、whileの最後にはbreakを入れる。
すぐに次の状態を実行する場合は、continueで分岐の頭に戻る
1を使うのが妥当かと思ったのですが、どうなのでしょうか。
他の良い方法はありますか。
switch文を使った状態遷移の元型のイメージ
► スポイラーを表示
色々な説明があって、Stateパターンがどのようなものか分かっていません。すみません。
以下のようなものを考えています。 これを使う側はこのようなイメージです(例が適切でなかったらすみません)
class Inventory
{
private:
State *mState;
public:
Inventory() : mState(0){
mState = new Opening();
}
void Update()
{
auto newOne = mState->Update();
if( newOne != mState){
delete mState;
mState = newOne;
// #######################################
// ここでnewOne->Update()をしたい場合がある
// #######################################
}
}
};
僕が考えたのは、State *State::Update( bool* )とすることで、
擬似的にStateの返し値を2つにして、その場で実行するならtrueを返す方法です。
よろしくお願いします。