Rumah > pembangunan bahagian belakang > C++ > Mengapakah Mengakses Ahli Integer Const Statik Menghasilkan Ralat Rujukan Tidak Ditakrifkan dalam C?

Mengapakah Mengakses Ahli Integer Const Statik Menghasilkan Ralat Rujukan Tidak Ditakrifkan dalam C?

Susan Sarandon
Lepaskan: 2024-11-30 21:03:21
asal
761 orang telah melayarinya

Why Does Accessing a Static Const Integer Member Result in an Undefined Reference Error in C  ?

Ahli Integer Const Statik dan Ralat Rujukan Tidak Ditakrifkan

Bahasa C membenarkan takrif ahli const statik dalam definisi kelas untuk jenis integer . Walau bagaimanapun, percubaan baru-baru ini telah menemui ralat pemaut. Khususnya, kelas bernama "ujian" mengisytiharkan ahli integer const statik "N" dengan nilai 10. Apabila cuba mengakses dan menggunakan "N" dalam fungsi seterusnya, kod itu gagal dengan ralat rujukan yang tidak ditentukan.

Permulaan Malar Jenis Integer

Sementara pengisytiharan kelas membenarkan nilai awal yang akan ditetapkan untuk "N", perlu diambil perhatian bahawa ini hanyalah pemula, bukan definisi lengkap. Menurut piawaian C, ahli kamiran const statik memerlukan definisi di luar perisytiharan kelas.

Impak Parameter Rujukan

Pesalah dalam kes ini ialah panggilan ke fungsi "std::min". Oleh kerana "std::min" mengambil parameternya dengan rujukan berterusan, ia memerlukan "N" ditakrifkan sepenuhnya. Ketiadaan takrifan berasingan untuk "N" membawa kepada ralat rujukan yang tidak ditentukan.

Mengelakkan Ralat

Untuk menyelesaikan isu, takrifan "N" mesti disediakan di luar pengisytiharan kelas. Ini boleh dicapai dengan mengisytiharkan dan memulakan "N" dalam ruang nama atau fail pengepala yang berasingan. Selain itu, mungkin berfaedah untuk menggunakan kata kunci "constexpr" untuk memastikan bahawa "N" dinilai pada masa penyusunan.

Kesimpulan

Ralat pemaut yang ditemui dalam contoh ini berpunca daripada takrifan tidak lengkap ahli integer const statik "N." Dengan memahami perbezaan antara permulaan dan definisi serta menangani keperluan parameter rujukan, isu ini boleh dibetulkan dengan berkesan.

Atas ialah kandungan terperinci Mengapakah Mengakses Ahli Integer Const Statik Menghasilkan Ralat Rujukan Tidak Ditakrifkan 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan