Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat sintaks C++: Ahli penghitungan perlu dimulakan dalam kurungan, apakah yang perlu saya lakukan?

Ralat sintaks C++: Ahli penghitungan perlu dimulakan dalam kurungan, apakah yang perlu saya lakukan?

WBOY
WBOYasal
2023-08-22 15:41:04812semak imbas

Ralat sintaks C++: Ahli penghitungan perlu dimulakan dalam kurungan, apakah yang perlu saya lakukan?

C++ ialah bahasa pengaturcaraan biasa yang sintaksnya agak ketat dan mudah dipelajari serta diterapkan. Walau bagaimanapun, semasa pengaturcaraan tertentu, tidak dapat dielakkan untuk menghadapi pelbagai ralat Salah satu ralat biasa ialah "ahli penghitungan perlu dimulakan dalam kurungan".

Dalam C++, jenis penghitungan ialah jenis data yang sangat mudah, yang boleh mentakrifkan set pemalar dengan nilai diskret, seperti:

enum Color {RED, YELLOW, GREEN};

Dalam contoh ini, kami mentakrifkan jenis penghitungan Warna, yang Mengandungi tiga pemalar penghitungan: MERAH , KUNING dan HIJAU. Secara lalai, nilai pemalar penghitungan ialah 0, 1, dan 2.

Walau bagaimanapun, apabila kita ingin memberikan nilai khas kepada pemalar penghitungan, kita perlu memulakannya dalam kurungan, seperti:

enum ErrorCode {OK = 0, ERROR_FILE_NOT_FOUND = 2, ERROR_OUT_OF_MEMORY = 5};

Dalam contoh ini, kami mentakrifkan ErrorCode jenis penghitungan, yang Mengandungi tiga pemalar penghitungan: OK, ERROR_FILE_NOT_FUND and ERROR_OUT_OF_MEMORY. Antaranya, nilai OK ialah 0, nilai ERROR_FILE_NOT_FOUND ialah 2, dan nilai ERROR_OUT_OF_MEMORY ialah 5.

Walau bagaimanapun, kadangkala kita terlupa untuk memulakan apabila mentakrifkan pemalar penghitungan, dan ralat "ahli penghitungan perlu dimulakan dalam kurungan" berlaku. Contohnya, ralat ini akan berlaku dalam kod berikut:

enum Direction {UP, DOWN, LEFT, RIGHT, UNKNOWN = -1};

int main() {
    Direction d = LEFT;
    return 0;
}

Dalam contoh ini, kami mentakrifkan Arah jenis penghitungan, yang mengandungi empat pemalar penghitungan: ATAS, BAWAH, KIRI dan KANAN. Pada masa yang sama, kami memberikan nilai khas -1 kepada UNKNOWN. Walau bagaimanapun, kerana kami terlupa untuk menentukan nilai khusus untuk ATAS, BAWAH, KIRI dan KANAN, pengkompil akan menggesa ralat "ahli enum perlu dimulakan dalam kurungan".

Jadi, bagaimana kita harus menangani kesilapan ini? Kaedah mudah adalah untuk menentukan nilai khusus untuk semua pemalar penghitungan, seperti:

enum Direction {UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, UNKNOWN = -1};

Dalam contoh ini, kami menentukan nilai khusus untuk semua pemalar penghitungan, supaya pengkompil tidak akan menggesa ralat .

Kaedah lain ialah menggunakan kelas enum yang baru diperkenalkan dalam C++11. kelas enum ialah jenis penghitungan selamat jenis yang memaksa semua pemalar penghitungan untuk menentukan jenis tertentu, dan skop pemalar penghitungan adalah terhad kepada jenis penghitungan. Contohnya:

enum class Direction : int {UP, DOWN, LEFT, RIGHT, UNKNOWN = -1};

int main() {
    Direction d = Direction::LEFT;
    return 0;
}

Dalam contoh ini, kami mentakrifkan Arah jenis kelas enum, yang menentukan jenis pemalar penghitungan sebagai int. Pada masa yang sama, kami menetapkan nilai khas -1 untuk UNKNOWN. Apabila menggunakan pemalar penghitungan, kita perlu menambah awalan jenis penghitungan, seperti Direction::LEFT. Dengan cara ini, walaupun kita terlupa untuk menentukan nilai tertentu untuk pemalar penghitungan, pengkompil tidak akan menggesa ralat.

Sebagai kesimpulan, masalah ahli enumerasi perlu dimulakan dalam kurungan dalam C++ boleh diselesaikan dengan menentukan nilai khusus untuk semua pemalar penghitungan atau menggunakan jenis kelas enum. Kita harus mengelakkan ralat seperti ini semasa pengaturcaraan untuk memastikan ketepatan dan keteguhan program.

Atas ialah kandungan terperinci Ralat sintaks C++: Ahli penghitungan perlu dimulakan dalam kurungan, apakah yang perlu saya lakukan?. 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