C++에서 enum flag 기능 사용하기 with C++11


C++에서 enum flag 기능 사용하기 with C++11

C Family C++에서 enum flag 기능 사용하기 with C++11 슬픈단잠 2017. 6. 15. 23:00 이웃추가 본문 기타 기능 type safe하면서도 bit 연산(flag)을 지원하는 형태를 만들고 싶은 경우가 있습니다. 최신 언어들에서는 언어 자체적으로 지원을 해줍니다.

C#은 "Flags"라는 attribute를 통해서 지원하기도 합니다. [System.Flags] enum Test { None = 0, Enum1 = 1 << 0, Enum2 = 1 << 1, Enum3 = 1 << 2, }; 위와 같이 선언할 경우 bit 연산을 통해서 type safe하게 접근하는 것이 가능합니다.

하지만 C++의 경우에는 사실상 scope가 없어서 마구잡이로 접근이 가능했으며, int 등의 타입으로의 암시적 형변환도 꽤 쉬운축에 속했죠. 하지만 C++ 11로 넘어오면서 type safe한, 즉 strict한 enum을 선언하는 것이 가능하게 되었습니다. enum clas...



원문링크 : C++에서 enum flag 기능 사용하기 with C++11