2012-07-03 71 views
0

可能重複:
C++: Iterate through an enum如何在java中像C++一樣迭代枚舉?

我具有以下在C + +枚舉;

typedef enum 
{ 
    APP_NONE = 0, 
    APP_SESSION = 0x80000001, 
    APP_TITLE = 2, 
} APP_TYPE; 

我寫一個測試功能,其接受字符串,獲取相關整數,例如:getEnumByString( 「APP_NONE」)= 0; 或反之則getEnumString(0)=「APP_NONE」。

它可能以及如何完成它?

+0

更經調查是不可能的,因爲枚舉是在運行時只是整數,沒有相關的字符串名稱的信息。 –

回答

1

您可以將enum值推入容器中,如向量或集合,然後遍歷該值。

std::vector<APP_TYPE> types; 
types.push_back(APP_NONE); 
types.push_back(APP_SESSION); 
types.push_back(APP_TITLE); 

可以使用映射到enum值與一個字符串,反之亦然關聯。

std::map<APP_TYPE, std::string> type2string; 
type2string[APP_NONE] = "APP_NONE"; 
type2string[APP_SESSION] = "APP_SESSION"; 
type2string[APP_TITLE] = "APP_TITLE";