Rujukan Tidak Ditakrifkan kepada Ahli Statik: Panduan Pemula
Ahli data statik sering digunakan untuk berkongsi maklumat merentas kejadian kelas. Walau bagaimanapun, pembangun kadangkala menghadapi ralat "rujukan tidak ditentukan" apabila menggunakan ahli data statik. Isu ini timbul disebabkan oleh perbezaan antara pengisytiharan dan takrifan.
Memahami Pengisytiharan dan Takrifan
Satu pengisytiharan memperkenalkan kewujudan pembolehubah kepada pengkompil tanpa menyatakan lokasi memorinya. Definisi, sebaliknya, memperuntukkan memori untuk pembolehubah dan memberikan alamatnya.
Dalam kes ahli data statik, pengisytiharan mereka berlaku dalam definisi kelas tetapi tidak memberikan mereka alamat. Takrifan sebenar mesti disediakan secara berasingan.
Menentukan Ahli Data Statik
Untuk menyelesaikan ralat "rujukan tidak ditentukan", tentukan secara eksplisit ahli data statik di luar definisi kelas, biasanya dalam fail pelaksanaan (.cpp). Sebagai contoh, pertimbangkan kod berikut:
// Header file (.h) class Example { static bool exampleStaticMember; }; // Implementation file (.cpp) bool Example::exampleStaticMember;
Pengecualian untuk Jenis Kamiran dan Penghitungan
Ahli data statik jenis kamiran atau penghitungan boleh dimulakan terus dalam kelas definisi:
class Example { static const int initialized = 15; };
Dalam kes ini, takrifan dalam fail pelaksanaan mesti meninggalkan pemula:
const int Example::initialized;
Ahli Data Statik dalam Templat
Untuk templat, ahli data statik ditakrifkan dalam fail pengepala bersama-sama dengan pengisytiharan kelas. Pengecualian kepada Peraturan Satu Definisi membenarkan berbilang takrifan ahli data statik templat kelas.
Kegunaan "statik" Lain
Di luar skop kelas, "statik" mempunyai makna tambahan:
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan' dengan Ahli Statik dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!