Bagaimanakah Saya Menyelesaikan Ralat \'Simbol Luaran Tidak Selesai\' Apabila Menetapkan kepada Medan Objek Statik?

Patricia Arquette
Lepaskan: 2024-10-31 16:03:18
asal
716 orang telah melayarinya

How Do I Resolve the

Memahami Ralat "Simbol Luaran Tidak Selesai" untuk Tugasan Medan Objek Statik

Apabila menulis kod, anda mungkin menghadapi situasi di mana anda perlu menetapkan nilai kepada medan objek statik dari kelas yang berbeza. Walau bagaimanapun, percubaan tugasan sedemikian boleh membawa kepada ralat pemautan dengan mesej "simbol luaran yang tidak dapat diselesaikan."

Pertimbangkan contoh kod yang dipermudahkan:

<code class="cpp">class A
{
public:
    A() {}
};

class B
{
public:
    static A* a;
};

int main()
{
    B::a = new A;
}</code>
Salin selepas log masuk

Percubaan untuk menyusun kod ini akan mengakibatkan ralat:

error LNK2001: unresolved external symbol "public:
static class A * B::a" (?a@B@@2PAVA@@A)
Salin selepas log masuk

Ralat ini berlaku kerana medan objek statik tidak ditakrifkan secara tersirat dalam pengisytiharan kelasnya. Menurut piawai rujukan C, "Pengisytiharan ahli data statik di dalam definisi kelas bukanlah definisi dan mungkin jenis yang tidak lengkap."

Peraturan untuk Definisi Medan Objek Statik

Untuk menyelesaikan ralat ini, anda mesti mentakrifkan medan objek statik di luar definisi kelas secara eksplisit. Peraturan ini digunakan pada semua medan objek statik, tanpa mengira kebolehcapaian atau kebolehubahannya.

Contoh Definisi:

<code class="cpp">A* B::a = nullptr;</code>
Salin selepas log masuk

Meletakkan definisi dalam skop ruang nama yang disertakan memastikan bahawa pemaut boleh mencari simbol apabila cuba menyelesaikan tugasan dalam main().

Atas ialah kandungan terperinci Bagaimanakah Saya Menyelesaikan Ralat \'Simbol Luaran Tidak Selesai\' Apabila Menetapkan kepada Medan Objek Statik?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!