Simbol Tidak Ditakrifkan: "vtable" dan "typeinfo"
Soalan:
Apabila menyusun program C, ralat berikut berlaku:
Undefined symbols: "vtable for Obstacle" "typeinfo for Obstacle"
Apakah maksud simbol ini, dan bagaimanakah ia boleh diselesaikan?
Jawapan:
Dalam C , kaedah maya ialah kaedah yang diisytiharkan dalam kelas asas dan ditindih dalam kelas terbitan. Untuk membenarkan pengikatan dinamik kepada kaedah yang betul semasa masa jalan, pengkompil menjana jadual kaedah maya (vtable) dan menaip maklumat (typeinfo) untuk setiap kelas yang mengandungi kaedah maya.
Ralat menunjukkan bahawa pengkompil tidak dapat cari vtable dan typeinfo untuk kelas Obstacle. Ini boleh berlaku jika:
Untuk menyelesaikan ralat ini, pastikan semua kaedah maya dalam kelas Obstacle diisytiharkan sebagai maya tulen, menggunakan sintaks berikut:
<code class="cpp">virtual void Method() = 0;</code>
Ini menunjukkan bahawa kaedah mesti ditindih dalam kelas terbitan dan ia mungkin tidak mempunyai pelaksanaannya sendiri dalam kelas asas.
Jika kelas Halangan mengandungi sebarang kaedah maya bukan tulen, pastikan ia dilaksanakan dalam kelas terbitan. Jika tidak, pengkompil akan menganggap bahawa mereka mempunyai pelaksanaan di suatu tempat dan menjana vtable dan typeinfo dalam fail objek yang tidak mengandungi pelaksanaan sebenar.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'Simbol Tidak Ditakrifkan: \'vtable\' dan \'typeinfo\'\' dalam Program C Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!