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が用意されているみたい。