2

列挙型クラスと std::string を使用して std::map を試みていますが、エラーが発生しています。-std=c++0x で gcc 4.4.7 を使用しています (これは修正済みです)

.h ファイル:

enum class state_t{
    unknown,
    off,
    on,
    fault
};

typedef std::map<state_t,std::string> statemap_t;

.cpp ファイル:

statemap_t state={
   {state_t::unknown,"unknown"}
   {state_t::off,"off"}
   {state_t::on,"on"}
   {state_t::fault,"fault"}
}

状態遷移を許可するメソッドは次のようになります。

Foo::allowStateChange(const state_t localState, const state_t globalState, const state_t newState){
    //Some code to verify if the state transition is allowed.
    std::cout << "Device Local State:" << state.find(localState)->second << "Device Global State:" << state.find(globalState)->second << "Device New State:" << state.find(newState)->second << std::endl;
}

コンパイル時に、次のエラーが発生します: エラー: タイプ 'state_t' および 'state_t' のオペランドがバイナリ 'operator<' に対して無効です

に変更enum class state_tするenum state_tと動作します。列挙型クラスを使用してマップで見つける方法はありますか?

前もって感謝します。

4

2 に答える 2