Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Mendapat Ralat \'Simbol Tidak Ditakrifkan: \'vtable\' dan \'typeinfo\'\' dalam Program C Saya?

Mengapa Saya Mendapat Ralat \'Simbol Tidak Ditakrifkan: \'vtable\' dan \'typeinfo\'\' dalam Program C Saya?

Linda Hamilton
Lepaskan: 2024-10-31 16:02:56
asal
410 orang telah melayarinya

Why Am I Getting

Simbol Tidak Ditakrifkan: "vtable" dan "typeinfo"

Soalan:

Apabila menyusun program C, ralat berikut berlaku:

Undefined symbols:
  "vtable for Obstacle"
  "typeinfo for Obstacle"
Salin selepas log masuk

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:

  • Kelas Obstacle tidak diisytiharkan dengan betul sebagai abstrak, atau
  • Kelas Obstacle mengandungi kaedah maya bukan tulen yang tidak dilaksanakan dalam kelas terbitan.

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan