我想std :: map,一个枚举类和一个std :: string,但我得到一些错误。 我使用gcc 4.4.7与-std =的C++ 0x(这是固定的)如何使用std :: map <enum class,std :: string>?
在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"}
}
的法允许的状态transitionis,如:
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时,我得到一个错误: 错误:我类型“state_t”和“state_t”二进制“操作<”
的NVALID操作数如果我改变enum class state_t
到enum state_t
它的工作原理。 有没有什么方法可以在地图上找到一个枚举类?
在此先感谢。
你拼错'<<'为'<? –
不,我检查过它 – user2357667
哦,所以这个问题与'cout'完全没有关系?只是定义地图工作? –