2012-07-03 41 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";