Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Simbol Luaran Tidak Selesai' dengan Templat C?

Mengapa Saya Mendapat Ralat 'Simbol Luaran Tidak Selesai' dengan Templat C?

Barbara Streisand
Barbara Streisandasal
2025-01-03 22:07:41365semak imbas

Why Do I Get

Memahami Ralat "Simbol Luaran Tidak Selesai" dalam Templat

Apabila menggunakan templat dalam C di mana kod dipisahkan antara fail pengepala (H) dan sumber (CPP), anda boleh menghadapi ralat "simbol luaran yang tidak dapat diselesaikan" semasa memaut. Ini timbul kerana templat hanya dibuat seketika pada masa penggunaan. Apabila digunakan, pengkompil memerlukan definisi fungsi yang lengkap untuk menjana kod yang betul.

Dalam senario ini, kod fungsi terletak dalam fail sumber templat, yang tidak boleh diakses semasa penyusunan sumber program. Pengkompil menganggap fungsi ditakrifkan di tempat lain dan hanya memasukkan panggilan fungsi. Walau bagaimanapun, fail sumber templat tidak termasuk jenis templat khusus yang digunakan dalam sumber program, menyebabkan simbol luaran tidak dapat diselesaikan.

Untuk menyelesaikan isu ini, pertimbangkan pilihan berikut:

  1. Fungsi Templat Sebaris: Tentukan semua fungsi ahli templat sebagai sebaris dalam fail sumber. Ini memaksa pengkompil untuk memasukkan kod fungsi walaupun apabila jenis templat tertentu tidak digunakan.
  2. Kelas Templat Pengepala sahaja: Sertakan takrif penuh fungsi ahli templat dalam fail pengepala, menghapuskan keperluan untuk fail sumber yang berasingan dan membuat kod tersedia kepada pengkompil semasa penyusunan sumber program.

Dengan menyediakan pengkompil dengan akses kepada kod fungsi templat penuh semasa penyusunan sumber program, penyelesaian ini berkesan menangani ralat "simbol luaran yang tidak dapat diselesaikan".

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Simbol Luaran Tidak Selesai' dengan Templat 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