Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat sintaks C++: pengecam dalam penghitungan mestilah pemalar integer, bagaimana untuk menyelesaikannya?

Ralat sintaks C++: pengecam dalam penghitungan mestilah pemalar integer, bagaimana untuk menyelesaikannya?

WBOY
WBOYasal
2023-08-22 10:27:171059semak imbas

Apabila pengaturcaraan dalam C++, kadangkala anda akan menemui mesej ralat sintaks "Pengecam dalam pengiraan mestilah pemalar integer". Artikel ini menerangkan punca masalah ini dan penyelesaian yang mungkin.

Pertama, kita perlu menjelaskan apa itu penghitungan. Dalam C++, penghitungan ialah jenis data khas yang digunakan untuk menentukan koleksi pemalar dengan nilai diskret. Setiap pemalar dalam penghitungan diberikan nilai integer, dengan pemalar pertama menjadi lalai kepada 0 dan pemalar selebihnya bertambah mengikut turutan. Sebagai contoh:

enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};

Dalam kod di atas, Hari Minggu ialah nama jenis penghitungan ini, Isnin, Selasa, dsb. ialah pemalar ahlinya, dan ia diberikan nilai integer​​dari 0 hingga 6 masing-masing.

Walau bagaimanapun, apabila kita tersilap mentakrifkan nilai pemalar ahli sebagai pemalar bukan integer apabila mentakrifkan penghitungan, seperti rentetan atau nombor titik terapung, sintaks "pengecam dalam penghitungan mestilah pemalar integer" akan muncul. Mesej ralat. Contohnya:

enum Fruit {Apple = 1, Banana = 2, Orange = "orange"}; //错误!

Dalam kod di atas, Jingga ditakrifkan sebagai pemalar rentetan, jadi ralat akan dilaporkan semasa penyusunan.

Jadi, bagaimana untuk menyelesaikan masalah ini? Penyelesaian mudah ialah dengan menyatakan secara eksplisit nilai integer untuk semua pemalar ahli dan bukannya menggunakan kaedah penambahan lalai. Contohnya:

enum Fruit {Apple = 1, Banana = 2, Orange = 3};

Dalam kod di atas, kami secara manual menentukan nilai integer untuk setiap pemalar ahli untuk mengelakkan ralat dengan pemalar bukan integer.

Penyelesaian lain ialah menggunakan kelas enum dan bukannya enum biasa. Kelas penghitungan adalah lebih ketat daripada penghitungan biasa dan tidak membenarkan penukaran tersirat nilai integer, dengan itu mengelakkan ralat di atas. Contohnya:

enum class Fruit {Apple = 1, Banana = 2, Orange}; //Orange自动被分配整数值3

Dalam kod di atas, kami menggunakan kelas enum untuk mentakrifkan penghitungan jenis Buah dan tiada nilai integer ditentukan untuk Jingga, tetapi ia masih diberikan nilai integer 3 kerana ini ialah takrifan tingkah laku enum kelas .

Ringkasnya, apabila menghadapi ralat sintaks "pengecam dalam penghitungan mestilah pemalar integer" dalam pengaturcaraan C++, kita boleh menyelesaikan masalah ini dengan menyatakan secara eksplisit nilai integer pemalar ahli atau menggunakan kelas penghitungan.

Atas ialah kandungan terperinci Ralat sintaks C++: pengecam dalam penghitungan mestilah pemalar integer, bagaimana untuk menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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