>백엔드 개발 >C++ >C++ 구문 오류: 열거형의 식별자는 정수 상수여야 합니다. 어떻게 해결합니까?

C++ 구문 오류: 열거형의 식별자는 정수 상수여야 합니다. 어떻게 해결합니까?

WBOY
WBOY원래의
2023-08-22 10:27:171172검색

C++로 프로그래밍할 때 "열거형 식별자는 정수 상수여야 합니다"라는 구문 오류 메시지가 나타나는 경우가 있습니다. 이 문서에서는 이 문제의 원인과 가능한 해결 방법을 설명합니다.

먼저 열거형이 무엇인지 명확히 해야 합니다. C++에서 열거형은 이산 값을 가진 상수 컬렉션을 정의하는 데 사용되는 특수 데이터 형식입니다. 열거형의 각 상수에는 정수 값이 할당되며, 첫 번째 상수의 기본값은 0이고 나머지 상수는 순서대로 증가합니다. 예:

enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};

위 코드에서 Weekday는 이 열거형의 이름이고, Monday, Tuesday 등은 해당 멤버 상수이며 각각 0에서 6까지의 정수 값이 할당됩니다.

그러나 문자열이나 부동 소수점 숫자와 같은 열거형을 정의할 때 멤버 상수의 값을 정수가 아닌 상수로 잘못 정의하면 "열거형의 식별자는 정수 상수여야 합니다"라는 구문이 나타납니다. 에러 메시지. 예:

enum Fruit {Apple = 1, Banana = 2, Orange = "orange"}; //错误!

위 코드에서 Orange는 문자열 상수로 정의되므로 컴파일 중에 오류가 보고됩니다.

그렇다면 이 문제를 어떻게 해결해야 할까요? 간단한 해결 방법은 기본 증분 방법을 사용하는 대신 모든 멤버 상수에 대해 정수 값을 명시적으로 지정하는 것입니다. 예:

enum Fruit {Apple = 1, Banana = 2, Orange = 3};

위 코드에서는 정수가 아닌 상수로 인한 오류를 방지하기 위해 각 멤버 상수에 정수 값을 수동으로 지정합니다.

또 다른 해결책은 일반 열거형 대신 열거형 클래스를 사용하는 것입니다. 열거형 클래스는 일반 열거형보다 더 엄격하며 정수 값의 암시적 변환을 허용하지 않으므로 위의 오류를 피할 수 있습니다. 예:

enum class Fruit {Apple = 1, Banana = 2, Orange}; //Orange自动被分配整数值3

위 코드에서는 enum 클래스를 사용하여 Fruit 유형의 열거형을 정의했으며 Orange에는 정수 값이 지정되지 않았지만 이것이 열거형의 동작 정의이기 때문에 여전히 정수 값 3이 할당되었습니다. 수업 .

간단히 말하면, C++ 프로그래밍에서 "열거형 식별자는 정수 상수여야 합니다"라는 구문 오류가 발생하는 경우 멤버 상수의 정수 값을 명시적으로 지정하거나 열거형 클래스를 사용하여 이 문제를 해결할 수 있습니다.

위 내용은 C++ 구문 오류: 열거형의 식별자는 정수 상수여야 합니다. 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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