Rumah > Artikel > pembangunan bahagian belakang > Mengapakah saya mendapat ralat \"Rujukan Tidak Ditakrifkan\" apabila menghantar rujukan pemalar statik kepada fungsi?
Rujukan Tidak Ditakrifkan dengan Rujukan Malar Statik
Apabila melaksanakan fungsi dengan rujukan kepada pemalar statik, seperti const int & a, pengkompil mungkin menghadapi ralat "Rujukan tidak ditentukan". Ralat ini berpunca daripada fakta bahawa, walaupun pemalar diisytiharkan sebagai statik, ia tidak ditakrifkan dalam konteks di mana fungsi dipanggil.
Menurut standard C (9.4.2/4), statik ahli data jenis kamiran const boleh dimulakan dengan pemula pemalar dalam pengisytiharannya. Walau bagaimanapun, apabila digunakan dalam parameter fungsi, menghantarnya dengan rujukan tetap merupakan "menggunakan"nya (seperti 3.2/2) dan mencetuskan keperluan untuk definisinya dalam skop ruang nama.
Dalam contoh yang disediakan, kConst pemalar statik digunakan dalam fungsi foo melalui baris foo(kConst). Oleh kerana pemalar tidak ditakrifkan di mana-mana, pengkompil cuba membuat rujukan kepada objek yang tidak ditentukan. Untuk menyelesaikan masalah ini, pembangun mesti sama ada memberikan takrifan untuk kConst atau lulus pemalar mengikut nilai (memaksa penciptaan objek sementara), seperti yang ditunjukkan dalam penyelesaian yang dicadangkan contoh.
Walaupun GCC mungkin membenarkan menghantar pemalar mengikut nilai (melalui static_cast
Atas ialah kandungan terperinci Mengapakah saya mendapat ralat \"Rujukan Tidak Ditakrifkan\" apabila menghantar rujukan pemalar statik kepada fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!