2013-05-26 64 views
0

我已經定義一個枚舉這樣的:C++ wstring的到枚舉

enum eFeature 
{ 
    eF_NONE=0, 
    eF_PORT_A=1, 
    eF_PORT_B=2, 
    eF_PORT_C=3, 
}; 

我現在想轉換的wstring(其是 「0」, 「1」, 「2」 或 「3」)到eFeature。

我試圖

eFeature iThis; 
iThis = _wtoi(mystring.c_str()); 

但是,編譯器告訴我「式的‘詮釋’不能被分配到類型eFeature的實體的值。」

有人可以幫忙嗎? 謝謝。

+2

您的枚舉範圍從0到3,而wstring值包括「4」。這是一個額外的挑戰,還是隻是一個錯字? –

+0

閱讀[使用C++進行類型轉換](http://en.cppreference.com/w/cpp/language/expressions#Conversions)。 –

+0

@MrLister對不起,錯字。 – user2421725

回答

4

您正試圖將int分配給enum,這是不允許的。離開wstring分心之外,你在做什麼是

eFeature iThis; 
iThis = 42; 

你首先需要轉換intenum類型等價的:

eFeature iThis; 
iThis = static_cast<eFeature>(42); 

很明顯,你將需要進行某種形式的先進行範圍檢查。

+0

非常感謝! – user2421725

+1

@ user2421725:相信我,當我說,做一個函數。最好'eFeature eFeature_from_string(const std :: wstring&)'。 –