Apabila bekerja dengan pembolehubah kelas statik, anda mungkin menghadapi ralat "rujukan tidak ditentukan kepada pembolehubah statik" dalam C . Artikel ini akan meneroka isu ini dan memberikan penyelesaian.
Pertimbangkan kod berikut sebagai contoh:
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; }
Setelah menyusun kod ini, anda mungkin menerima ralat "rujukan tidak ditentukan kepada 'Helloworld ::x'". Ini kerana anda tidak memberikan definisi untuk pembolehubah statik x.
Dalam C , pembolehubah kelas statik mesti ditakrifkan di luar definisi kelas. Hanya menambah definisi untuk x dalam skop global akan menyelesaikan ralat:
int Helloworld::x; // Define the static variable
Anda boleh memulakan x dengan sebarang nilai yang sesuai. Jika tiada pemula disediakan, ia akan dimulakan sifar secara lalai.
Oleh itu, kod yang diubah suai akan kelihatan seperti ini:
class Helloworld { public: static int x; void foo(); }; int Helloworld::x = 0; // Initialize the static variable void Helloworld::foo() { Helloworld::x = 10; }
Kini, pengkompil akan dapat mengesan dengan betul takrifan x dan selesaikan ralat. Ingat, walaupun fungsi foo() bukan statik, ia masih boleh mengakses pembolehubah statik x kelas Helloworld.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Tertakrif kepada Pembolehubah Statik' dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!