Rumah >pembangunan bahagian belakang >C++ >Mengapa g Menghasilkan Ralat 'Rujukan Tidak Ditakrifkan kepada typeinfo'?

Mengapa g Menghasilkan Ralat 'Rujukan Tidak Ditakrifkan kepada typeinfo'?

Susan Sarandon
Susan Sarandonasal
2024-12-03 06:18:10303semak imbas

Why Does g   Produce

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn