いわゆるETOI,ITOE系の説明。
ETOIはEnum to Int
ITOEはInt to Enumです。
cpp
// 自分のタイプに合わせてゲームのモードを選択する。
enum struct type{
OTTORI,
SEKKACHI
}
const char* gamemodes[]={
"スコアモード",
"タイムトライアルモード"
}
// ※ enum structはC++11で追加されました。
// enum structはenum classと等価であり、従来の型の内enumとは違って
// 型があるものです。
こんな二つの情報があって、関連させたい場合、
enumを綺麗にintにキャストしてあげなければなりません。
★キャストについて★
enumのまま数字にキャストするには、
static_castを用います。static_castは、その場でキャスト可能かどうかを確認するので
ダメな場合はコンパイルエラーを吐きます。これに対して実行時に確認するものは
dynamic_castをもちいます。ダウンキャストに用います。
cocos2d-xでは、Ref*→Node*とかに用いるといいです。(Node*)でのキャストはおすすめせず、
dynamic_cast<Node*>(hoge)
にしましょう。
少し話がそれました。enumをIntにキャストするので、
type t = type::OTTORI;
int index = static_cast<int>(t);
const char* gamemode = gamemode[index];
// gamemode = gamemodes[0]
のように使います。
逆にindexからenumに戻したい場合は
type t = static_cast<type>(index);
の用に用います。とりあえず頻繁にCの()でのキャストは脱却して、この二つから使ってみましょう。castにはreinterpret_castなど、いくつかありますが、頻用するのはこの2つだと思います。