Rumah > pembangunan bahagian belakang > C++ > Mengapa Kod C Saya Menghasilkan Ralat 'Rujukan Tidak Ditakrifkan kepada Pembina Kelas Templat'?

Mengapa Kod C Saya Menghasilkan Ralat 'Rujukan Tidak Ditakrifkan kepada Pembina Kelas Templat'?

Barbara Streisand
Lepaskan: 2025-01-02 22:36:40
asal
293 orang telah melayarinya

Why Does My C   Code Produce an

Rujukan Tidak Ditakrifkan kepada Pembina Kelas Templat

Dalam kod C ini, pengkompil menjana ralat "rujukan tidak ditentukan kepada cola(float):: cola()". Ralat ini berlaku kerana pengkompil tidak dapat mencari pelaksanaan pembina untuk cola kelas templat.

Jawapan 1: Instantiasi Templat Eksplisit

Satu penyelesaian adalah dengan menyegerakan secara eksplisit cola kelas templat pada penghujung cola.cpp, memaksanya untuk menyusun konkrit instantiations.

template class cola<float>;
template class cola<string>;
Salin selepas log masuk

Jawapan 2: Kemasukan Fail Pengepala

Sebagai alternatif, pelaksanaan kelas templat boleh dialihkan ke fail pengepala cola.h. Ini memastikan bahawa pelaksanaan tersedia untuk semua unit terjemahan yang termasuk fail pengepala.

Sebab Kemasukan Fail Pengepala

Meletakkan pelaksanaan dalam fail pengepala mengelakkan keperluan untuk instantiasi yang jelas. Ia menjamin bahawa kelas templat dan fungsi ahlinya tersedia untuk setiap unit terjemahan yang termasuk fail pengepala. Pendekatan ini biasanya digunakan untuk kelas templat yang digunakan secara meluas di seluruh pangkalan kod.

Nota Tambahan:

  • Pastikan hanya satu pelaksanaan kelas templat wujud dalam keseluruhan pangkalan kod.
  • Pelaksanaan kelas templat mestilah selepas semua kelas takrifan.
  • Jika kelas templat diisytiharkan dalam berbilang fail pengepala, pelaksanaan hendaklah dimasukkan ke dalam fail pengepala berasingan yang disertakan dalam semua fail pengepala lain di mana kelas templat digunakan.

Atas ialah kandungan terperinci Mengapa Kod C Saya Menghasilkan Ralat 'Rujukan Tidak Ditakrifkan kepada Pembina Kelas Templat'?. 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