Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Typeinfo' dalam C ?

Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Typeinfo' dalam C ?

Linda Hamilton
Linda Hamiltonasal
2024-12-10 16:57:18616semak imbas

Why Am I Getting an

Rujukan Tidak Ditakrifkan kepada Typeinfo: Punca dan Penyelesaian

Ralat "rujukan tidak ditentukan kepada maklumat taip" yang ditakuti boleh melanda pembangun C, membuatkan mereka bingung tentang asal usulnya. Di sebalik tabir, ralat ini timbul apabila pemaut terjumpa pengisytiharan fungsi maya tanpa takrifan yang sepadan.

Fungsi maya direka bentuk untuk ditindih dalam kelas terbitan, membolehkan gelagat polimorfik. Walau bagaimanapun, mengisytiharkan fungsi maya tanpa definisinya membayangkan bahawa definisi itu berada di tempat lain. Ini memaksa pemaut untuk mencari unit kompilasi luaran atau perpustakaan untuk definisi yang hilang. Jika pemaut gagal mencarinya, ralat "rujukan tidak ditentukan kepada info taip" muncul.

Pertimbangkan pengisytiharan ini:

virtual void fn();

Pengisytiharan ini memaklumkan pengkompil bahawa fn() ialah fungsi maya tetapi tidak menyediakan pelaksanaannya. Pemaut akan membenderakan ini sebagai simbol yang tidak dapat diselesaikan semasa peringkat pemautan, mengakibatkan ralat.

Untuk membetulkannya, anda mesti memberikan definisi untuk fungsi maya:

virtual void fn() { /* Implementation here */ }

Dengan melampirkan definisi kepada pengisytiharan, pemaut tidak perlu lagi mencari simbol yang hilang.

Ralat ini adalah serupa dengan kod berikut coretan:

extern int i;
int *pi = &i;

Dalam kes ini, i diisytiharkan sebagai pembolehubah luaran yang terletak dalam unit kompilasi lain. Ini memerlukan pemaut untuk menyelesaikan rujukan luaran, tetapi jika ia tidak dapat mengesan i, ia akan melaporkan ralat simbol yang tidak dapat diselesaikan.

Dengan memahami punca asas ralat "rujukan tidak ditentukan kepada maklumat taip", pembangun boleh menyelesaikan masalah dengan segera dan selesaikan isu dengan memberikan takrifan yang betul untuk fungsi maya atau mengendalikan rujukan simbol luaran dengan sewajarnya.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Typeinfo' dalam C ?. 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