最近の作業は
>列挙体で添え字を指定するというのではマズイのでしょうか?文字列を管理する必要もなくなりますし、キーの衝突も防げるので便利だと思うのですが…。
ギク〜。
と、無意味に反応するのはおいておいて、おっしゃる通り、キーとデータの対応は列挙体で概ね解決できます。ちうより、私の場合はさらに退化してマクロで切ってます…。
/* これは ひどい */ #define ENERMY_ENE1 0 #define ENERMY_ENE2 1 #define ENERMY_ENE3 2 #define ENERMY_ENE4 3 #define ENERMY_ENE5 4 #define ENERMY_ENE6 5 #define ENERMY_ENE7 6 #define ENERMY_TAMA1 7
マクロでも問題なく使えますが、マクロは副作用が怖いので、良い子は型チェックのかかる列挙型を使いましょうね〜〜〜。上の例は項番が1から数え上げなのがまた謎ですな。元々は0番にダミーが入ってたからと云う意味があったのですが、いつの間にかそれが無くなって無意味だけが残った感じですね。
じゃあ、何でわざわざ文字列でテーブルアクセスとか考えてるかと云うと…。コンフィグファイルからのデータ拾い上げを実装しようとしてたからなんですね〜。すなわち、ゲームのデータをiniファイルに記述しておいて、データに付与したラベルをキーとして辞書(ハッシュ)に突っ込んで、データを取りだそう、と。。。
…って、実はそのへんのことって、ついこないだkenmoさん(id:kenmo)が既になさっていることなんですががが(http://gamehell.g.hatena.ne.jp/kenmo/20070920)。まあ、kenmoさんはDで書いたので、C++で書いてる私は改めて実装しないとなぁ〜〜〜って事で書いている次第ではありますが。既に他人がやっていることを大車輪しつつ、既存のライブラリに載ってるモジュールを再発明しながら造るという、まさに車輪オブ車輪。再発明の中の再発明ってなわけです。
…と云う負い目から、コソコソしてましたw