enum이란 숫자에 의미(이름)를 부여해주는 문법이다.
enum E_ATTACK
{
E_NONE,
E_NORMAL,
E_MAGIC,
E_ETC,
.......등등
};
enum을 사용하는 문법이다. 순서대로 0,1,2,3 의 순서대로 값을 가지게 되는데 사용할시에는
void getAttack(E_ATTACK eAttack)
{
}
함수의 인수에 enum 값을 넣어주게 되는데 0,1,2,3의 숫자의 의미를 가지고 있지만 숫자를 넣는것은 오류가 난다.
따라서 enum의 정의를 보고 맞는 것을 사용해준다. 이는 강제되는 것으로 의미전달이 명확하기때문에 자주 사용된다.
getAttack( E_NORMAL );
이런식으로 사용해준다.
비슷한 것으로 define문법이 사용되지만 이는 함수를 사용하는 사용자가 어떤것을 사용해야할지 알기가 힘들다.
또한 함수에 define으로 정의된 이름과 밸류값 모두 들어가기때문에 의미전달도 명확하지 않으므로 사용하는것은 지양한다.
이를 배열에 활용해보자.
enum E_CAN
{
E_NONE,
E_CIDER,
E_COKE,
E_COFFEE,
E_MAX,
};
int _tmain(int argc, _TCHAR* argv[])
{
C_CAN *pCanData[3] = {};
pCanData[0] = new C_CIDER;
pCanData[1] = new C_COFFEE;
pCanData[2] = new C_COKE;
////////////////////////////////////////////////////////////////
C_CAN *pCanData[E_MAX] = {};
pCanData[E_CIDER] = new C_CIDER;
pCanData[E_COFFEE] = new C_COFFEE;
pCanData[E_COKE] = new C_COKE;
return 0;
}
위와 아래에서 enum을 이용하면 의미전달의 차이가 명확하다.




덧글