enumとmapについて
下記のエラーとは別に出たエラーに関するメモ。
気分的には
typedef enum _SAMPLE{ TEST1, TEST2, TEST3, }SAMPLE; class CClass{ public: int GetParam(SAMPLE eSample){ return m_mapSample[eSample]; //エラー }; private: std::map<SAMPLE,int> m_mapSample; };
みたいな書き方ができたらすてきだなと思う。
と思ってたらこれはエラー。
どうもmapのキーは比較演算子が定義されていないといけないようで、intはもちろんされているがenumにするとされていないらしい。#defineはあまりつかいたくないしどうにかenumでのりきれないものか?
なのでこんな仕様に変更してしのぎました。
typedef enum _SAMPLE{ TEST1, TEST2, TEST3, }SAMPLE; class CClass{ public: int GetParam(SAMPLE eSample){ return m_mapSample[(int)eSample]; //OK }; private: std::map<int,int> m_mapSample; };
正直しょぼい。でもまあ当面はこれでいいかな?
ちなみにJavaではEnumMapというEnum用のhashmapが用意されているみたい。