Rujukan Tidak Ditakrifkan kepada Pembolehubah Statik dalam C
Apabila bekerja dengan pembolehubah statik dalam C , pembangun sering menghadapi ralat "rujukan tidak ditentukan kepada pembolehubah statik ." Artikel ini meneroka isu ini dan menyediakan penyelesaian tanpa menggunakan kaedah statik.
Masalah:
Pertimbangkan kod berikut:
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; };
Ini kod mencetuskan ralat "rujukan tidak ditentukan" kerana pembolehubah statik x dirujuk dalam kaedah bukan statik foo(), tetapi ia tidak mempunyai definisi.
Penyelesaian:
Untuk menyelesaikan isu ini, adalah penting untuk memberikan definisi untuk pembolehubah ahli statik x di luar definisi kelas. Ini boleh dicapai seperti berikut:
class Helloworld { public: static int x; void foo(); }; // Define the static variable outside the class int Helloworld::x = 0; void Helloworld::foo() { Helloworld::x = 10; };
Dengan menyatakan nilai awal sebagai 0 atau membiarkannya tidak ditentukan, x akan dimulakan sifar. Sebagai alternatif, nilai awal yang lebih sesuai boleh diberikan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Pembolehubah Statik' dalam C dan Bagaimana Saya Boleh Membetulkannya Tanpa Menggunakan Kaedah Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!