Rumah pembangunan bahagian belakang C++ Ralat C++: Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan.

Ralat C++: Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan.

Aug 22, 2023 pm 05:42 PM
c++ jenis penghitungan Laporkan ralat

Ralat C++: Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan.

C++ ialah bahasa pengaturcaraan yang biasa digunakan yang sering digunakan dalam reka bentuk dan pembangunan program. Apabila menulis program dalam C++, anda sering menghadapi pelbagai ralat penyusunan dan amaran. Antaranya, apabila kita menggunakan jenis penghitungan, kita kadangkala menghadapi ralat "Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan". Artikel ini akan menerangkan jenis penghitungan C++ dan cara mengubah suai ralat ini.

Jenis penghitungan C++

Pertama, mari kita perkenalkan secara ringkas jenis penghitungan (juga dipanggil pembolehubah penghitungan) dalam C++. Dalam C++, jenis penghitungan boleh mentakrifkan beberapa nilai sebagai senarai terhitung Nilai ini dipanggil pemalar penghitungan. Contoh diberikan di bawah:

enum Color {RED, BLUE, GREEN};
Salin selepas log masuk

Di sini kami mentakrifkan jenis penghitungan Warna dan mentakrifkan nilainya sebagai MERAH, BIRU dan HIJAU. Setiap pemalar enum di sini sebenarnya adalah nilai integer. Secara lalai, nilai MERAH ialah 0, nilai BIRU ialah 1 dan nilai HIJAU ialah 2.

Dengan cara ini, kita boleh menggunakan nilai yang berbeza dengan mudah sebagai pemalar penghitungan, menjadikan program lebih jelas dan lebih mudah difahami. Contohnya, atribut seperti hari dalam minggu atau warna boleh ditakrifkan dengan cara ini.

Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan

Namun, kadangkala apabila kita menentukan jenis penghitungan, kita akan menghadapi ralat "Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan". Contohnya:

enum Fruit {APPLE, BANANA, ORANGE, MANGO} f;
Salin selepas log masuk

Di sini kita mentakrifkan jenis penghitungan Buah, dan mentakrifkan nilainya sebagai EPAL, PISANG, OREN, MANGO, dsb., dan juga mentakrifkan pembolehubah penghitungan f.

Namun, apabila kita menyusun atur cara, kita akan menemui ralat kompilasi:

error: enumeration type 'Fruit' is not allowed as underlying type of enumeration
Salin selepas log masuk

Sebab ralat ini ialah jenis penghitungan sebelum piawai C++11 memerlukan pemalar penghitungan mestilah jenis integer. Dalam contoh ini, walaupun kami tidak memberikan nilai secara eksplisit kepada setiap pemalar penghitungan (nilai lalai ialah jenis integer), jenis penghitungan Buah yang kami isytiharkan ialah jenis bukan integer, jadi pengkompil melaporkan ralat.

Penyelesaian

Jadi, bagaimana untuk mengubah suai ralat ini? Kita boleh menyelesaikan masalah ini dengan menggunakan "kelas penghitungan" baharu C++11. Kelas penghitungan adalah salah satu titik pengetahuan baharu dalam C++11 Berbanding dengan jenis penghitungan sebelumnya, terdapat beberapa perbezaan dalam definisi dan penggunaan.

Sebagai contoh, kita boleh mengubah suai jenis enumerasi Buah di atas seperti berikut:

enum class Fruit {APPLE, BANANA, ORANGE, MANGO};
Salin selepas log masuk

Di sini kita menggunakan kata kunci kelas enum untuk mentakrifkan Buah sebagai kelas enumerasi. Tidak seperti jenis penghitungan sebelumnya, pemalar penghitungan dalam kelas penghitungan bukan lagi jenis int. Dengan cara ini, walaupun setiap pemalar penghitungan tidak diberikan nilai secara eksplisit, ralat kompilasi tidak akan berlaku.

Perhatikan bahawa pemalar penghitungan yang ditakrifkan menggunakan kelas penghitungan perlu diakses menggunakan penentu skop (::). Contohnya:

enum class Fruit {APPLE, BANANA, ORANGE, MANGO};
Fruit f = Fruit::BANANA;
Salin selepas log masuk

Pada masa ini, nilai f haruslah nilai pemalar PISANG dalam kelas penghitungan Buah. Dengan cara ini, kami mengelakkan ralat "Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan" semasa mentakrifkan jenis penghitungan.

Kesimpulan

Dalam C++, jenis penghitungan ialah jenis data yang biasa digunakan, yang boleh dengan mudah mentakrifkan beberapa nilai sebagai senarai yang boleh dikira. Walau bagaimanapun, apabila menggunakan jenis penghitungan, ralat penyusunan "Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan" mungkin berlaku. Pada masa ini, kita boleh menyelesaikan masalah ini dengan menggunakan kelas penghitungan baharu dalam C++11 untuk mengelakkan ralat penyusunan semasa mentakrifkan jenis penghitungan.

Atas ialah kandungan terperinci Ralat C++: Pengisytiharan penghitungan jenis bukan integer tidak dibenarkan.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
<🎜> obscur: Ekspedisi 33 - Cara mendapatkan pemangkin Chroma yang sempurna
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1676
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
C# vs C: Sejarah, evolusi, dan prospek masa depan C# vs C: Sejarah, evolusi, dan prospek masa depan Apr 19, 2025 am 12:07 AM

Sejarah dan evolusi C# dan C adalah unik, dan prospek masa depan juga berbeza. 1.C dicipta oleh BjarnestroustRup pada tahun 1983 untuk memperkenalkan pengaturcaraan berorientasikan objek ke dalam bahasa C. Proses evolusinya termasuk pelbagai standardisasi, seperti C 11 memperkenalkan kata kunci auto dan ekspresi Lambda, C 20 memperkenalkan konsep dan coroutin, dan akan memberi tumpuan kepada pengaturcaraan prestasi dan sistem pada masa akan datang. 2.C# telah dikeluarkan oleh Microsoft pada tahun 2000. Menggabungkan kelebihan C dan Java, evolusinya memberi tumpuan kepada kesederhanaan dan produktiviti. Sebagai contoh, C#2.0 memperkenalkan generik dan C#5.0 memperkenalkan pengaturcaraan tak segerak, yang akan memberi tumpuan kepada produktiviti pemaju dan pengkomputeran awan pada masa akan datang.

Golang dan C: Konvensyen vs kelajuan mentah Golang dan C: Konvensyen vs kelajuan mentah Apr 21, 2025 am 12:16 AM

Golang lebih baik daripada C dalam kesesuaian, manakala C lebih baik daripada Golang dalam kelajuan mentah. 1) Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran, yang sesuai untuk mengendalikan sejumlah besar tugas serentak. 2) C Melalui pengoptimuman pengkompil dan perpustakaan standard, ia menyediakan prestasi tinggi yang dekat dengan perkakasan, sesuai untuk aplikasi yang memerlukan pengoptimuman yang melampau.

Di mana untuk menulis kod di vscode Di mana untuk menulis kod di vscode Apr 15, 2025 pm 09:54 PM

Kod penulisan dalam Kod Visual Studio (VSCode) adalah mudah dan mudah digunakan. Hanya pasang VSCode, buat projek, pilih bahasa, buat fail, tulis kod, simpan dan jalankannya. Kelebihan vscode termasuk sumber lintas platform, bebas dan terbuka, ciri-ciri yang kuat, sambungan yang kaya, dan ringan dan cepat.

Golang vs C: Perbandingan Prestasi dan Kelajuan Golang vs C: Perbandingan Prestasi dan Kelajuan Apr 21, 2025 am 12:13 AM

Golang sesuai untuk pembangunan pesat dan senario serentak, dan C sesuai untuk senario di mana prestasi ekstrem dan kawalan peringkat rendah diperlukan. 1) Golang meningkatkan prestasi melalui pengumpulan sampah dan mekanisme konvensional, dan sesuai untuk pembangunan perkhidmatan web yang tinggi. 2) C mencapai prestasi muktamad melalui pengurusan memori manual dan pengoptimuman pengkompil, dan sesuai untuk pembangunan sistem tertanam.

Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Python vs C: Lengkung pembelajaran dan kemudahan penggunaan Apr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Python vs C: Meneroka Prestasi dan Kecekapan Python vs C: Meneroka Prestasi dan Kecekapan Apr 18, 2025 am 12:20 AM

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

Golang dan C: Perdagangan dalam prestasi Golang dan C: Perdagangan dalam prestasi Apr 17, 2025 am 12:18 AM

Perbezaan prestasi antara Golang dan C terutamanya ditunjukkan dalam pengurusan ingatan, pengoptimuman kompilasi dan kecekapan runtime. 1) Mekanisme pengumpulan sampah Golang adalah mudah tetapi boleh menjejaskan prestasi, 2) Pengurusan memori manual C dan pengoptimuman pengkompil lebih cekap dalam pengkomputeran rekursif.

Python vs C: Memahami perbezaan utama Python vs C: Memahami perbezaan utama Apr 21, 2025 am 12:18 AM

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

See all articles