enum (unscopped)
enum PlayerType
{
PT_None,
PT_Knight,
PT_Archer,
}
범위가 없고 전역에서 사용할 수 있기 때문에
중복되는 이름이 사용불가하며
이를 막기 위해 'PT_'와 같은 용어를 앞에 붙여서 사용한다
enum class (scopped)
enum class ObjectType
{
Player,
Monster,
Projectile,
}
범위가 정해져있기 때문에
중복되는 이름도 사용 가능하다
그리고
아래처럼
암묵적인 변환이 금지되어 있어 약간의 불편함이 장점, 단점으로 작용한다
enum class ObjectType
{
Player,
Monster,
Projectile,
}
double value = static_cast<double>(ObjectType::Player);
int choice;
cin >> choice;
if (choice == static_cast<int>(ObjectType::Monster)) { }
추가적으로,
enum과 enum class는 기본적으로 int형이며
원하는 크기로 생성하는 방법은 아래와 같다
enum PlayerType : char
{
PT_None,
PT_Knight,
PT_Archer,
}
enum class ObjectType : long long
{
Player,
Monster,
Projectile,
}
'C++ > [루키스] Modern C++' 카테고리의 다른 글
[MC++] override, final (0) | 2023.07.01 |
---|---|
[MC++] delete (0) | 2023.07.01 |
[MC++] using (0) | 2023.06.29 |
[MC++] nullptr (0) | 2023.06.29 |
[MC++] 중괄호 초기화 {} (0) | 2023.06.29 |