Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Ahli Statik' Semasa Kompilasi Silang?
Rujukan Tidak Selesai kepada Ahli Statik dalam Kompilasi Silang
Apabila bekerja dengan penyusun silang, adalah perkara biasa untuk menghadapi ralat yang berkaitan dengan rujukan statik yang tidak dapat diselesaikan ahli. Ini berlaku apabila pembolehubah statik diisytiharkan dalam pengepala kelas tetapi tidak ditakrifkan dalam fail .cpp yang sepadan.
Penjelasan Masalah:
Pertimbangkan contoh kod yang disediakan:
class WindowsTimer { public: WindowsTimer() { _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; };
Pembolehubah statik _frekuensi diisytiharkan dalam definisi kelas tetapi tidak ditakrifkan. Apabila cuba membina kod, pemaut gagal menyelesaikan rujukan kepada _frequency, mengakibatkan ralat rujukan tidak ditentukan.
Penyelesaian:
Untuk menyelesaikan isu ini, pembolehubah statik mesti ditakrifkan dalam fail .cpp yang sepadan. Ini boleh dilakukan seperti berikut:
// WindowsTimer.cpp LARGE_INTEGER WindowsTimer::_frequency;
Penaakulan:
Pembolehubah statik, tidak seperti pembolehubah contoh, dikongsi antara semua kejadian kelas. Oleh itu, mereka memerlukan definisi tunggal dalam program. Dengan mentakrifkan pembolehubah statik dalam fail .cpp, pemaut boleh berjaya mencari dan menyelesaikan rujukan kepadanya.
Nota Tambahan:
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Ahli Statik' Semasa Kompilasi Silang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!