Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Typeinfo' dalam C ?
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!