unscoped enumeration과 scoped enumeration 둘 다 전방 선언을 할 수 있습니다.
아래와 같이합니다.
enum ITEMTYPE : short;
enum class CHARACTER_CLASS : short;
전방 선언을 할 때 unscoped enumeration은 타입 선언을 생략할 수 없지만 scoped enumeration은 타입 선언을 생략 할 수 있습니다.
아래 예제 코드를 보면 전방 선언을 올바르게 사용한 것과 잘못 사용한 예를 볼 수 있습니다.
< TypeDef.h >
#pragma once
enum ITEMTYPE : short
{
WEAPON,
EQUIPMENT,
GEM = 10,
DEFENSE,
};
enum class CHARACTER_CLASS1 : short
{
WARRIOR = 1,
MONK,
FIGHTER,
};
enum class CHARACTER_CLASS2
{
WARRIOR = 1,
MONK,
FIGHTER,
};
< Character.h >
#pragma once
enum ITEMTYPE : short;
//enum ITEMTYPE; // 에러
//enum class ITEMTYPE : short; // 에러
enum class CHARACTER_CLASS1 : short;
//enum class CHARACTER_CLASS1; // 에러
//enum class CHARACTER_CLASS1 : int; // 에러
//enum CHARACTER_CLASS1 : short; // 에러
enum class CHARACTER_CLASS2;
struct Character
{
ITEMTYPE m_ItemType;
void SetItemType( ITEMTYPE Type );
CHARACTER_CLASS1 m_Class;
void SetClass( CHARACTER_CLASS1 CharClass );
};
< Character.cpp >
#include "Character.h"
#include "TypeDef.h"
void Character::SetItemType( ITEMTYPE Type )
{
m_ItemType = Type;
}
void Character::SetClass( CHARACTER_CLASS1 CharClass )
{
m_Class = CharClass;
}
'C++0x' 카테고리의 다른 글
[ VC11-C++11 ] chrono - 시간 계산 (0) | 2012.08.07 |
---|---|
[ VC11-C++11 ] chrono - 시간 측정하기 (0) | 2012.07.31 |
[ VC11-C++11 ] enum - unscoped enumeration과 scoped enumeration (0) | 2012.07.16 |
[미리 보는 C++11] 8. Placement Insert (0) | 2012.02.27 |
[미리 보는 C++11] 4. constexpr - 2 (0) | 2011.09.23 |