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 중국어 웹사이트의 기타 관련 기사를 참조하세요!