Mordern C++ enum class

CJB_ny·2022년 8월 29일
0

C++ 정리

목록 보기
77/95
post-thumbnail

enum class

Scoped enum

enum이랑 enum class의 장단점이 있다.

enum class가 enum보다 가지는 장점.

1) 이름 공간 관리 (scoped)
2) 암묵적인 변환 금지 (장단점이 될 수 있음)

enum의 경우 5, 6, 7

또한 기본적으로 enum PlayerType은 사이즈가 int로 잡힌다.

ㅇㅇ.

enum PlayerType : char {} 하면 1바이트로 됨

그런데 이게 중요한게 아니라

PT_이거 왜 붙이나?

이게 더 낫지 않나?

그런데 이렇게하면 이런 Knight와 같은 이름의 전역으로 막 퍼진다고 보면 된다.

unscoped enum

그래서 얘를 이렇게 부름.

같은 이름을 또 사용못한다.

이런 이름이 곂칠때 발생하는 문제때문에

이렇게 앞글자를 붙여주는게 생김.

enum class 의 경우

얘내들의 이름은 이 클래스 안에서만 유효하기 때문에

이렇게 해도 문제 없다.

(또한 int랑 사이즈 같다)

enum 변환

일반적인 enum으로 만들어진 애는 암묵적인 변환이 이루어진다.

이 이름이 있으나 없으나 별반 차이가 없다.

실질적으로 들어가 있는 값은 0, 1, 2, 3 이랑 똑같다.

이게 사실은

dobule value = 1; 이랑 다를게 없다.

하지만 enum class의 경우

이런 암묵적인 변환은 막혀있다.

말도안되지만

이렇게 캐스팅으로 통해서 바꿀 수가 있기는 하다.

이게 장점이 될 수도 있고 단점이 될 수도있다.

TextRPG에서 했던 이런 부분들

비트 플래그

이렇게 사용못하고

이렇게 굳이 해야됨.

정답은 없음.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글