비관리 코드의 열거형
비관리 코드에서 열거형을 정의할 때는 다음과
같습니다.
enum
WEAPON_TYPE
{
GUN = 1,
SWORD = 2,
BOW = 3
};
열거형은 정수형으로 int 형에 대입할 수 있습니다.
그런데 저는 위의 방식으로 사용할 때 ‘GUN’이라고 사용하기 보다는 ‘GUN’이 어떤 열거형에 속하는지
표시할 수 있도록 좀 더 다른 방식으로 사용하고 있습니다.
struct WEAPON
{
enum TYPE
{
GUN = 1,
SWORD = 2,
BOW = 3
};
};
int nUsedWeapon = WEAPON::GUN;
이렇게 저는 열거형을 조금 이상한 방법으로
사용하고 있는데 C++/CLI에서는 그럴 필요가 없어졌습니다.
C++/CLI는 제가 딱 원하는 방식을 정식으로 지원하고 있습니다.
C++/CLI의 열거형
enum class
WEAPON
{
GUN = 1,
SWORD = 2,
BOW = 3
};
int nUsedWeapon = static_cast<int>(WEAPON::GUN);
C++/CLI의 열거형은 비관리코드와 비교해서 다른 점은 위에서 알 수 있듯이 암묵적으로 int 형에 대입할 수 없습니다. 왜냐하면 열거형은 정수형이 아니고 object이기 때문입니다.
그래서 캐스팅을 해야 합니다.
그리고
C++/CLI의 열거형은 정수형을 명시적으로 정할 수 있습니다.
enum class
WEAPON : short
{
GUN = 1,
SWORD = 2,
BOW = 3
};
public ref class WEAPON
{
public:
literal short GUN = 1;
literal short SWORD = 2;
literal short BOW = 3;
};
http://msdn.microsoft.com/ko-kr/library/ms235243.aspx
'C++/CLI' 카테고리의 다른 글
[Step. 13] parameter array (1) | 2010.09.10 |
---|---|
[Step. 12] for each (1) | 2010.09.03 |
[Step. 10] 이벤트 ( event ) (0) | 2010.08.20 |
[Step. 09] 델리게이트 (delegate) (2) | 2010.08.12 |
[Step. 08] 프로퍼티 ( property ) (8) | 2010.08.06 |