C++는 프로그램 설계 및 개발에 자주 사용되는 프로그래밍 언어입니다. C++로 프로그램을 작성할 때 다양한 컴파일 오류와 경고가 자주 발생합니다. 그 중, 열거형을 사용할 때 "정수가 아닌 열거형의 선언은 허용되지 않습니다."라는 오류가 발생하는 경우가 있습니다. 이 상황을 어떻게 처리해야 할까요? 이 문서에서는 C++ 열거형 유형이 무엇인지, 이 오류를 수정하는 방법을 설명합니다.
C++ 열거형
먼저 C++의 열거형(열거형 변수라고도 함)에 대해 간략하게 소개하겠습니다. C++에서 열거형은 일부 값을 열거 가능한 목록으로 정의할 수 있습니다. 이러한 값을 열거형 상수라고 합니다. 예는 다음과 같습니다.
enum Color {RED, BLUE, GREEN};
여기서 열거 유형 Color를 정의하고 해당 값을 RED, BLUE 및 GREEN으로 정의합니다. 여기의 각 열거형 상수는 실제로 정수 값입니다. 기본적으로 RED 값은 0, BLUE 값은 1, GREEN 값은 2입니다.
이렇게 하면 다양한 값을 열거형 상수로 편리하게 사용할 수 있어 프로그램을 더 명확하고 이해하기 쉽게 만들 수 있습니다. 예를 들어, 요일이나 색상과 같은 속성을 이 방식으로 정의할 수 있습니다.
정수가 아닌 유형의 열거형 선언은 허용되지 않습니다.
그러나 때때로 열거형을 정의할 때 "정수가 아닌 유형의 열거형 선언은 허용되지 않습니다"라는 오류가 발생합니다. 예:
enum Fruit {APPLE, BANANA, ORANGE, MANGO} f;
여기에서는 Fruit 열거형을 정의하고 해당 값을 APPLE, BANANA, ORANGE, MANGO 등으로 정의하고 열거형 변수 f도 정의합니다.
그러나 프로그램을 컴파일하면 다음과 같은 컴파일 오류가 발생합니다.
error: enumeration type 'Fruit' is not allowed as underlying type of enumeration
이 오류가 발생하는 이유는 C++11 표준 이전의 열거 유형에서는 열거 상수가 정수 유형이어야 하기 때문입니다. 이 예에서는 각 열거형 상수에 명시적으로 값을 할당하지 않았지만(기본값은 정수 유형), 우리가 선언한 Fruit 열거형 유형이 정수가 아니므로 컴파일러에서 오류를 보고했습니다.
Solution
그러면 이 오류를 수정하는 방법은 무엇인가요? C++11의 새로운 "열거 클래스"를 사용하여 이 문제를 해결할 수 있습니다. 열거형 클래스는 C++11의 새로운 지식 포인트 중 하나입니다. 이전 열거형 유형과 비교하면 정의와 사용에 몇 가지 차이점이 있습니다.
예를 들어 위의 Fruit 열거 유형을 다음과 같이 수정할 수 있습니다.
enum class Fruit {APPLE, BANANA, ORANGE, MANGO};
여기에서는 enum class 키워드를 사용하여 Fruit을 열거 클래스로 정의합니다. 이전 열거형과 달리 열거형 클래스의 열거형 상수는 더 이상 int 형식이 아닙니다. 이러한 방식으로 각 열거형 상수에 명시적으로 값이 할당되지 않은 경우에도 컴파일 오류가 발생하지 않습니다.
열거 클래스를 사용하여 정의된 열거 상수는 범위 지정자(::)를 사용하여 액세스해야 합니다. 예:
enum class Fruit {APPLE, BANANA, ORANGE, MANGO}; Fruit f = Fruit::BANANA;
이때 f의 값은 Fruit 열거형 클래스의 BANANA 상수 값이어야 합니다. 이러한 방식으로 열거 유형을 정의할 때 "정수가 아닌 유형의 열거 선언은 허용되지 않습니다"라는 오류를 방지합니다.
결론
C++에서 열거형은 일반적으로 사용되는 데이터형으로 일부 값을 열거 가능한 목록으로 쉽게 정의할 수 있습니다. 그러나 열거형을 사용하는 경우 "정수가 아닌 유형의 열거형 선언은 허용되지 않습니다"라는 컴파일 오류가 발생할 수 있습니다. 이때 열거형 유형을 정의할 때 컴파일 오류를 방지하기 위해 C++11의 새로운 열거형 클래스를 사용하여 이 문제를 해결할 수 있습니다.
위 내용은 C++ 오류: 정수가 아닌 유형의 열거형 선언은 허용되지 않습니다. 어떻게 수정해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

C++是一种广泛使用的面向对象的计算机编程语言,它支持您与之交互的大多数应用程序和网站。你需要编译器和集成开发环境来开发C++应用程序,既然你在这里,我猜你正在寻找一个。我们将在本文中介绍一些适用于Windows11的C++编译器的主要推荐。许多审查的编译器将主要用于C++,但也有许多通用编译器您可能想尝试。MinGW可以在Windows11上运行吗?在本文中,我们没有将MinGW作为独立编译器进行讨论,但如果讨论了某些IDE中的功能,并且是DevC++编译器的首选

在C++程序开发中,当我们声明了一个变量但是没有对其进行初始化,就会出现“变量未初始化”的报错。这种报错经常会让人感到很困惑和无从下手,因为这种错误并不像其他常见的语法错误那样具体,也不会给出特定的代码行数或者错误类型。因此,下面我们将详细介绍变量未初始化的问题,以及如何解决这个报错。一、什么是变量未初始化错误?变量未初始化是指在程序中声明了一个变量但是没有

C++是一门广受欢迎的编程语言,但是在使用过程中,经常会出现“未定义的引用”这个编译错误,给程序的开发带来了诸多麻烦。本篇文章将从出错原因和解决方法两个方面,探讨“未定义的引用”错误的解决方法。一、出错原因C++编译器在编译一个源文件时,会将它分为两个阶段:编译阶段和链接阶段。编译阶段将源文件中的源码转换为汇编代码,而链接阶段将不同的源文件合并为一个可执行文

如何优化C++开发中的文件读写性能在C++开发过程中,文件的读写操作是常见的任务之一。然而,由于文件读写是磁盘IO操作,相对于内存IO操作来说会更为耗时。为了提高程序的性能,我们需要优化文件读写操作。本文将介绍一些常见的优化技巧和建议,帮助开发者在C++文件读写过程中提高性能。使用合适的文件读写方式在C++中,文件读写可以通过多种方式实现,如C风格的文件IO

C++是一门强大的编程语言,它支持使用类模板来实现代码的复用,提高开发效率。但是在使用类模板时,可能会遭遇编译错误,其中一个比较常见的错误是“无法为类模板找到实例化”(error:cannotfindinstantiationofclasstemplate)。本文将介绍这个问题的原因以及如何解决。问题描述在使用类模板时,有时会遇到以下错误信息:e

iostream头文件包含了操作输入输出流的方法,比如读取一个文件,以流的方式读取;其作用是:让初学者有一个方便的命令行输入输出试验环境。iostream的设计初衷是提供一个可扩展的类型安全的IO机制。

c++初始化数组的方法:1、先定义数组再给数组赋值,语法“数据类型 数组名[length];数组名[下标]=值;”;2、定义数组时初始化数组,语法“数据类型 数组名[length]=[值列表]”。

使用Redis和C++构建高性能的图像处理应用图像处理是现代计算机应用中的重要环节之一。由于图像处理的复杂性和计算量大,如何在保证高性能的同时提供稳定的服务是一个挑战。本文将介绍如何使用Redis和C++构建高性能的图像处理应用,并提供一些代码示例。Redis是一个开源的内存数据库,具有高性能和高可用性的特点。它支持各种数据结构,如字符串、哈希表、列表等,同


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6
시각적 웹 개발 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
