>  기사  >  백엔드 개발  >  C++ 구문 오류: Enum 멤버를 괄호 안에서 초기화해야 합니다. 어떻게 해야 합니까?

C++ 구문 오류: Enum 멤버를 괄호 안에서 초기화해야 합니다. 어떻게 해야 합니까?

WBOY
WBOY원래의
2023-08-22 15:41:04812검색

C++ 구문 오류: Enum 멤버를 괄호 안에서 초기화해야 합니다. 어떻게 해야 합니까?

C++는 비교적 엄격한 구문을 갖추고 배우고 적용하기 쉬운 일반적인 프로그래밍 언어입니다. 하지만 특정 프로그래밍을 하다 보면 다양한 오류가 발생할 수밖에 없습니다. 일반적인 오류 중 하나는 "열거형 멤버를 괄호 안에서 초기화해야 합니다"입니다.

C++에서 열거형은 다음과 같이 이산 값으로 상수 집합을 정의할 수 있는 매우 편리한 데이터 유형입니다.

enum Color {RED, YELLOW, GREEN};

이 예에서는 세 가지 열거형 상수를 포함하는 Color 열거형을 정의합니다. RED , 노란색 및 녹색. 기본적으로 열거형 상수의 값은 0, 1, 2입니다.

그러나 열거형 상수에 특별한 값을 할당하려면 다음과 같이 괄호 안에 초기화해야 합니다.

enum ErrorCode {OK = 0, ERROR_FILE_NOT_FOUND = 2, ERROR_OUT_OF_MEMORY = 5};

이 예에서는 세 가지 열거형 상수를 포함하는 열거형 ErrorCode를 정의합니다. ERROR_FILE_NOT_FOUND 및 ERROR_OUT_OF_MEMORY. 그 중 OK 값은 0, ERROR_FILE_NOT_FOUND 값은 2, ERROR_OUT_OF_MEMORY 값은 5입니다.

그러나 열거형 상수를 정의할 때 초기화를 잊어버리는 경우가 가끔 있는데 "열거형 멤버는 괄호 안에서 초기화해야 합니다."라는 오류가 발생합니다. 예를 들어, 이 오류는 다음 코드에서 발생합니다.

enum Direction {UP, DOWN, LEFT, RIGHT, UNKNOWN = -1};

int main() {
    Direction d = LEFT;
    return 0;
}

이 예에서는 4개의 열거 상수(UP, DOWN, LEFT 및 RIGHT)가 포함된 열거 유형 Direction을 정의합니다. 동시에 UNKNOWN에는 특별한 값 -1을 할당합니다. 그러나 UP, DOWN, LEFT 및 RIGHT에 대한 특정 값을 지정하는 것을 잊었기 때문에 컴파일러는 "열거형 멤버를 괄호 안에서 초기화해야 합니다"라는 오류 메시지를 표시합니다.

그렇다면 이 오류를 어떻게 처리해야 할까요? 간단한 방법은 다음과 같이 모든 열거 상수에 특정 값을 지정하는 것입니다.

enum Direction {UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, UNKNOWN = -1};

이 예에서는 모든 열거 상수에 특정 값을 지정하여 컴파일러가 오류 메시지를 표시하지 않도록 합니다.

또 다른 방법은 C++11에 새로 도입된 enum 클래스를 사용하는 것입니다. enum 클래스는 모든 열거형 상수가 특정 유형을 지정하도록 강제하는 유형이 안전한 열거형 유형이며, 열거형 상수의 범위는 열거형 유형으로 제한됩니다. 예:

enum class Direction : int {UP, DOWN, LEFT, RIGHT, UNKNOWN = -1};

int main() {
    Direction d = Direction::LEFT;
    return 0;
}

이 예에서는 열거형 상수 유형을 int로 지정하는 열거형 클래스 유형의 방향을 정의합니다. 동시에 UNKNOWN에 대해 특수 값 -1을 지정합니다. 열거형 상수를 사용할 때 Direction::LEFT와 같은 열거형 유형의 접두사를 추가해야 합니다. 이런 방식으로 열거형 상수에 대한 특정 값을 지정하는 것을 잊어버린 경우에도 컴파일러는 오류 메시지를 표시하지 않습니다.

결론적으로 C++에서 열거형 멤버를 괄호 안에서 초기화해야 하는 문제는 모든 열거형 상수에 특정 값을 지정하거나 열거형 클래스 유형을 사용하면 해결할 수 있습니다. 프로그램의 정확성과 견고성을 보장하려면 프로그래밍할 때 이런 종류의 오류를 피해야 합니다.

위 내용은 C++ 구문 오류: Enum 멤버를 괄호 안에서 초기화해야 합니다. 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.