Mengapa Saya Mendapat Ralat \'Undefined Rujukan kepada \'Bar::kConst\'\' dalam C ?

DDD
Lepaskan: 2024-10-31 10:12:32
asal
992 orang telah melayarinya

Why Do I Get the

Rujukan Tidak Ditakrifkan kepada Ralat 'Bar::kConst' dalam C

Dalam C , apabila program cuba merujuk pembolehubah ahli const statik dalam kelas, seperti Bar::kConst dalam coretan kod yang diberikan, ia mungkin menghadapi ralat "Rujukan tidak ditentukan kepada 'Bar::kConst'". Ralat ini menunjukkan bahawa pengkompil tidak dapat mencari definisi untuk pembolehubah.

Menurut piawaian C (bahagian 9.4.2/4), ahli data statik dengan kamiran malar atau jenis penghitungan boleh dimulakan dalam kelas takrifan. Walau bagaimanapun, ia masih mesti ditakrifkan secara eksplisit dalam skop ruang nama jika ia digunakan dalam atur cara.

Dalam contoh yang disediakan, const int kConst statik diisytiharkan dalam kelas Bar, tetapi tidak ditakrifkan, seperti yang dinyatakan. dimulakan dalam pengisytiharan. Apabila fungsi foo dipanggil dalam kaedah Bar::func, ia cuba menghantar kConst melalui rujukan const. Ini dianggap sebagai "penggunaan" pembolehubah, mengikut piawaian C (bahagian 3.2/2). Memandangkan pembolehubah tidak ditakrifkan secara eksplisit, pengkompil tidak boleh melakukan penggantian yang diperlukan dan menimbulkan ralat.

Untuk menyelesaikan ralat ini, seseorang boleh sama ada mentakrifkan pembolehubah kConst secara eksplisit dalam skop ruang nama atau, seperti yang ditunjukkan dalam kod coretan, secara eksplisit menukar kConst kepada int sementara menggunakan static_cast, memaksa pengkompil melakukan penggantian pada masa penyusunan.

Sebagai kesimpulan, ralat "Rujukan tidak ditentukan kepada 'Bar::kConst'" berlaku kerana statik pembolehubah ahli const tidak ditakrifkan secara eksplisit, yang diperlukan apabila ia digunakan dalam program. Adalah penting untuk mematuhi piawaian C apabila mengisytiharkan dan menggunakan ahli data statik untuk mengelakkan ralat tersebut.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'Undefined Rujukan kepada \'Bar::kConst\'\' dalam C ?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan