列挙型クラスと 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
と動作します。列挙型クラスを使用してマップで見つける方法はありますか?
前もって感謝します。