Scoped enum
enum이랑 enum class의 장단점이 있다.
enum class가 enum보다 가지는 장점.
1) 이름 공간 관리 (scoped)
2) 암묵적인 변환 금지 (장단점이 될 수 있음)
enum의 경우 5, 6, 7
또한 기본적으로 enum PlayerType은 사이즈가 int로 잡힌다.
ㅇㅇ.
enum PlayerType : char {} 하면 1바이트로 됨
그런데 이게 중요한게 아니라
PT_이거 왜 붙이나?
이게 더 낫지 않나?
그런데 이렇게하면 이런 Knight와 같은 이름의 전역으로 막 퍼진다고 보면 된다.
그래서 얘를 이렇게 부름.
같은 이름을 또 사용못한다.
이런 이름이 곂칠때 발생하는 문제때문에
이렇게 앞글자를 붙여주는게 생김.
얘내들의 이름은 이 클래스 안에서만 유효하기 때문에
이렇게 해도 문제 없다.
(또한 int랑 사이즈 같다)
일반적인 enum으로 만들어진 애는 암묵적인 변환이 이루어진다.
이 이름이 있으나 없으나 별반 차이가 없다.
실질적으로 들어가 있는 값은 0, 1, 2, 3 이랑 똑같다.
이게 사실은
dobule value = 1; 이랑 다를게 없다.
하지만 enum class의 경우
이런 암묵적인 변환은 막혀있다.
말도안되지만
이렇게 캐스팅으로 통해서 바꿀 수가 있기는 하다.
이게 장점이 될 수도 있고 단점이 될 수도있다.
TextRPG에서 했던 이런 부분들
이렇게 사용못하고
이렇게 굳이 해야됨.