G : Memahami Ralat "Rujukan Tidak Ditakrifkan kepada Typeinfo"
Ralat "rujukan tidak ditentukan kepada maklumat taip" sering ditemui semasa menyusun atur cara C dengan g . Ia menandakan bahawa pemaut tidak dapat mencari maklumat jenis untuk kelas tertentu, yang mungkin mempunyai beberapa sebab.
Punca: Mengisytiharkan Fungsi Maya Tanpa Definisi
Satu sebab biasa untuk ralat ini mengisytiharkan fungsi maya tanpa memberikan definisinya dalam unit kompilasi yang sama. Apabila anda mengisytiharkan fungsi maya tanpa mentakrifkannya, anda mencadangkan bahawa definisinya wujud di tempat lain, sama ada dalam unit kompilasi berikutnya atau pustaka luaran.
Oleh itu, semasa fasa pemautan, pengkompil mencari definisi fungsi maya dalam yang lain. fail objek atau perpustakaan. Jika ia tidak dapat mengesan takrifan, ia menimbulkan ralat "rujukan tidak ditentukan kepada maklumat taip".
Contoh: Pengisytiharan Salah
virtual void fn();
Pengisytiharan ini memaklumkan pengkompil bahawa a fungsi maya bernama fn() wujud, tetapi ia tidak menyediakan konkrit pelaksanaan.
Contoh: Definisi Betul
virtual void fn() { /* Implementation code here */ }
Apabila anda memberikan definisi kepada fungsi maya, pemaut tidak perlu lagi mencarinya di tempat lain, menyelesaikan ralat.
Analogi: Pembolehubah Luaran Resolusi
Tingkah laku ini serupa dengan mengisytiharkan pembolehubah luaran dalam satu unit kompilasi dan cuba mengaksesnya dalam unit lain tanpa memberikan definisi yang jelas:
extern int i; int *pi = &i;
Di sini, pembolehubah i diisytiharkan secara luaran, menunjukkan bahawa takrifnya terletak pada unit kompilasi lain. Jika takrifan ini tidak tersedia pada masa pautan, pengkompil akan menjana ralat "rujukan tidak ditentukan".
Memahami punca ralat ini adalah penting untuk mengelakkannya dan memastikan penyusunan kod C anda berjaya.
Atas ialah kandungan terperinci Mengapa g Menghasilkan Ralat 'Rujukan Tidak Ditakrifkan kepada typeinfo'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!