【c++】enum struct(class)란?
c++에서 enum을 선언 할 때 다음과 같은 선언을 본 적이 있습니까?
// どこかのheaderファイル
enum struct HogeEnum
{
FAILURE,
SUCCESS,
};
※struct는 class도 될 수 있다
이 struct라든지 class는 무엇일까? 라고 하는 의문이 있어 조사해 보았습니다.
struct(class)의 두 가지 의미
결론, 두 가지 의미가있을 것 같습니다.
· 다른 enum 값으로 동일한 열거자를 사용할 수 있습니다.
· int 값과의 차이를 명확하게 만든다
조금 해설
※참고
프로그래밍 언어 C++ 4판 아래와 같은 코드는 컴파일은 통과합니까? // Test.h enum Color { RED, BLUE, PURPLE, }; enum TrafficLight { RED, YELLOG, 그린 }; // Test.cpp Color c_red = Color::RED; TrafficLight t_red = TrafficLight::RED; 음, 흐름적으로 알 것 같지만 이것은 통과하지 않습니다.
그렇다면 어떻게 해야 합니까?
같은 이름의 열거자를 사용할 수 있습니다.
다음과 같이 변경하면 됩니다. (c++11 이후 [thanks for 7of9씨])
enum struct Color
{
RED,
BLUE,
PURPLE,
};
enum struct TrafficLight
{
RED,
YELLOG,
GREEN
};
구조를 추가했습니다.
※class에서도 통과합니다.
※ 양쪽에 struct를 추가하고 있습니다만 한쪽만 추가하는 것만으로 통과합니다.
struct를 추가함으로써, 각 열거자의 스코프가 명확한 것이 되어, 빌드가 통과하게 되었습니다.
int와의 상호 변환
struct를 추가하지 않으면 실은 그대로 대입이 가능합니다.
int red = Color::RED;
의 상태군요.
struct가 있는 경우는 다음의 형태로 상호 변환할 수 있습니다.
int => enum 값
Color enumColorRed = static_cast<Color>(0);
enum 값 => int
int intColorRed = static_cast<int>(Color::RED);
Reference
이 문제에 관하여(【c++】enum struct(class)란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ashdik/items/0a11ac75f07c7f80e97a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)