소스도 간결하고 이해하기도 쉽다.
X Macro 를 사용하면 된다. 개념도 쉽다.
https://en.wikipedia.org/wiki/X_Macro
선언은 아래와 같이
#define MYNUMS \
X(ZERO, _T("빵")) \
X(ONE, _T("하나")) \
X(TWO, _T("둘"))
typedef enum {
#define X(Enum, string) Enum,
MYNUMS
#undef X
};
차례대로 모두 출력은 그냥 이렇게
#define X(Enum, string) \
std::cout << string << "\n";
MYNUMS
#undef X
index 로 문자열 가져오는건
string GetName(int idx)
{
#define X(Enum, string) \
if(Enum == idx) return string ;
MYNUMS
#undef X
return "";
}
참 쉽죠? ㅎㅎㅎ
참조 사이트
https://en.wikipedia.org/wiki/X_Macro
http://stackoverflow.com/questions/147267/easy-way-to-use-variables-of-enum-types-as-string-in-c/148610#148610