我想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'完全沒有關係?只是定義地圖工作? –