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!