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!