列挙型は単なるintなので添え字に使える。
enum Object { OBJ_NONE, OBJ_PLAYER, OBJ_ENEMY, OBJ_ITEM, OBJ_MAX }; Object obj[10]; const char* name[] = { "NONE","PLAYER","ENEMY","ITEM" }; for(int i=0; i<10; i++) { Object o = obj[i]; cout << name[ o ] << endl; }
たしかに言われてみればそのとおり。列挙型はintなので添え字にも使える。自分はほとんどswitch文でしか使ってなかった。switch文でもintの値として使っているのだから、配列の添え字にも使えるのは当然なのにどうして思いつかなかったのだろう。