タイプセーフなenumが欲しいねぇ
via C++におけるタイプセーフEnumのイディオム - どことなく技術屋な日々様。
{C++におけるタイプセーフEnumのイディオム}
(どこかからの引用。どこで見たかは忘れました……。すみません)
id: hanahiさんの頁でした。そして、URLを見たらbleis_tiftさんのサイトでした。気付いてませんでしたorz.
でC++によるタイプセーフなenum実装があったので試してみたんですが、
やっぱりタイプセーフは嬉しいけど、ちょっと冗長だよねぇ。
まぁ、40行程度なので「がまんせいよ」という意見もあるわけだけど、
メンテのコストが上昇するのと、
幾つもenumをつくりたい場合はなんとなく「うへぇ」となる。
あとは
HogeStatus s = HogeStatus::poison; switch (s.toEnum()) { case HogeStatus::POISON: printf("POISON?n"); break; case HogeStatus::PARALYSIS: printf("PARALYSIS?n"); break; case HogeStatus::WEAKNESS: printf("WEAKNESS?n"); break; }
みたいな感じになるので、違和感がないでもない。
要するにタイプセーフのためにオブジェクトとして宣言してある
- poison
- paralysis
- weakness
と、定数enumとして宣言されている、
- POISON
- PARALYSIS
- WEAKNESS
があるためだ。
まぁ、仕方がないんだけどね……。
機会があれば使ってみるかなぁ。