enumクラスとstd :: stringを使ってstd :: mapを実行しようとしていますが、何らかのエラーが発生しています。 .cppファイルでどのようにstd :: map <enum class、std :: string>?
enum class state_t{
unknown,
off,
on,
fault
};
typedef std::map<state_t,std::string> statemap_t;
:私は.hファイルで、(これが固定されている)-std = C++ 0xで
をGCC 4.4.7を使用しています
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;
}
compillingとき、私は次のエラーを取得: エラー:私のような状態transitionisを許可する方法タイプ 'state_t'と 'state_t'の無効なオペランドをバイナリ 'operator <'
enum class state_t
をenum state_t
に変更すると動作します。 enumクラスを使用してマップ内で検索する方法はありますか?
ありがとうございます。
'<<'のスペルミスを '<'ですか? –
いいえ、私はそれをチェックしました – user2357667
ああ、この質問は 'cout'と全く関係がありません?マップを定義するだけですか? –