


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};
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;
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
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};
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;
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Langkah-langkah untuk melaksanakan corak strategi dalam C++ adalah seperti berikut: tentukan antara muka strategi dan isytiharkan kaedah yang perlu dilaksanakan. Buat kelas strategi khusus, laksanakan antara muka masing-masing dan sediakan algoritma yang berbeza. Gunakan kelas konteks untuk memegang rujukan kepada kelas strategi konkrit dan melaksanakan operasi melaluinya.

Pengendalian pengecualian bersarang dilaksanakan dalam C++ melalui blok try-catch bersarang, membenarkan pengecualian baharu dibangkitkan dalam pengendali pengecualian. Langkah-langkah cuba-tangkap bersarang adalah seperti berikut: 1. Blok cuba-tangkap luar mengendalikan semua pengecualian, termasuk yang dilemparkan oleh pengendali pengecualian dalam. 2. Blok cuba-tangkap dalam mengendalikan jenis pengecualian tertentu, dan jika pengecualian luar skop berlaku, kawalan diberikan kepada pengendali pengecualian luaran.

Warisan templat C++ membenarkan kelas terbitan templat menggunakan semula kod dan kefungsian templat kelas asas, yang sesuai untuk mencipta kelas dengan logik teras yang sama tetapi gelagat khusus yang berbeza. Sintaks warisan templat ialah: templateclassDerived:publicBase{}. Contoh: templateclassBase{};templateclassDerived:publicBase{};. Kes praktikal: Mencipta kelas terbitan Derived, mewarisi fungsi mengira Base kelas asas, dan menambah kaedah printCount untuk mencetak kiraan semasa.

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...

Dalam C, jenis char digunakan dalam rentetan: 1. Simpan satu watak; 2. Gunakan array untuk mewakili rentetan dan berakhir dengan terminator null; 3. Beroperasi melalui fungsi operasi rentetan; 4. Baca atau output rentetan dari papan kekunci.

Dalam C++ berbilang benang, pengendalian pengecualian dilaksanakan melalui mekanisme std::promise dan std::future: gunakan objek promise untuk merekodkan pengecualian dalam utas yang membuang pengecualian. Gunakan objek masa hadapan untuk menyemak pengecualian dalam urutan yang menerima pengecualian. Kes praktikal menunjukkan cara menggunakan janji dan niaga hadapan untuk menangkap dan mengendalikan pengecualian dalam urutan yang berbeza.

TLS menyediakan setiap urutan dengan salinan peribadi data, disimpan dalam ruang tindanan benang, dan penggunaan memori berbeza-beza bergantung pada bilangan utas dan jumlah data. Strategi pengoptimuman termasuk memperuntukkan memori secara dinamik menggunakan kekunci khusus benang, menggunakan penunjuk pintar untuk mengelakkan kebocoran dan membahagikan data untuk menjimatkan ruang. Contohnya, aplikasi boleh memperuntukkan storan TLS secara dinamik untuk menyimpan mesej ralat hanya untuk sesi dengan mesej ralat.

Multithreading dalam bahasa dapat meningkatkan kecekapan program. Terdapat empat cara utama untuk melaksanakan multithreading dalam bahasa C: Buat proses bebas: Buat pelbagai proses berjalan secara bebas, setiap proses mempunyai ruang ingatan sendiri. Pseudo-Multithreading: Buat pelbagai aliran pelaksanaan dalam proses yang berkongsi ruang memori yang sama dan laksanakan secara bergantian. Perpustakaan multi-threaded: Gunakan perpustakaan berbilang threaded seperti PTHREADS untuk membuat dan mengurus benang, menyediakan fungsi operasi benang yang kaya. Coroutine: Pelaksanaan pelbagai threaded ringan yang membahagikan tugas menjadi subtask kecil dan melaksanakannya pada gilirannya.
