LoginSignup
3
3

More than 5 years have passed since last update.

enumからSceneを配列を利用して変換する

Last updated at Posted at 2014-08-18
// プレイするゲームのステージ
enum struct GameStage{
    STAGE1,
    STAGE2,
    STAGE3,
    STAGE4,
    STAGE5,
    STAGE6
}

以下やってしまってはダメなコードです


Scene* getSceneWithGameStage(GameStage s){
    if(s == STAGE1){
        return Stage1::createScene();
    } else if (s == STAGE2){
        return Stage2::createScene();   
    }

    .......(  )........
}

効率的にSceneを返すには、createメソッドを含んだ配列から引っ張ればいいです。


Scene* getSceneWithGameStage(GameStage s){
  static Scene *(*createScene[])() = {
        Stage1::createScene,
        Stage2::createScene,
        Stage3::createScene,
        Stage4::createScene,
        Stage5::createScene,
        Stage6::createScene,
    };

    return createScene[static_cast<int>(s)];
}

こうかくと効率的にSceneの取得が行えます。スマートですね。

static_cast(enum)はこちら

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3