2021-04-26 c++ (enum2)
2021. 4. 26. 11:38ㆍ카테고리 없음
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstring>
#include <cmath>
#include <ctime>
//클래스 내부의 enum
class calender {
public:
enum Month {
JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};
};
//일반적인 enum
enum Month {
JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};
//강화된 enum class type
enum class Month {
JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};
enum Math{
INC,DEC //DEC를 다른 의미로 생성했지만 위에 Month 클래스의 DEC와 구분이 불가능하다. 그래서 일반적인 enum 대신 enum class를 사용하는 것이다.
};
지금은 JAN이 1이라서 1,2,3,4 등의 열거값을 갖지만 만약 20으로 설정되면 뒤에 값들이 20,21,22,23 순으로 열거된다
enum함수는 헤더 파일에 넣는다.
int main() {
//클래스 내부의 enum
//calender::Month m = calender::Month::JAN; //뒤에 Month는 생략가능하다.
//강화된 enum class type
Month m = Month::JAN;
int values = (int)m;
switch (m)
{
case Month::JAN:
printf("1월\n");
break;
case Month::FEB:
printf("2월\n");
break;
case Month::MAR:
printf("3월\n");
break;
case Month::APR:
printf("4월\n");
break;
case Month::MAY:
printf("5월\n");
break;
case Month::JUN:
printf("6월\n");
break;
case Month::JUL:
printf("7월\n");
break;
case Month::AUG:
printf("8월\n");
break;
case Month::SEP:
printf("9월\n");
break;
case Month::OCT:
printf("10월\n");
break;
case Month::NOV:
printf("11월\n");
break;
case Month::DEC:
printf("12월\n");
break;
default:
break;
}
}
728x90