Apabila cuba menggunakan gelung untuk berasaskan julat pada tatasusunan diluluskan sebagai hujah kepada fungsi bukan utama, anda mungkin menghadapi ralat kompilasi. Ini kerana rujukan tatasusunan mereput kepada penunjuk, kehilangan maklumat tentang saiz tatasusunan.
Untuk menangani isu ini, terdapat dua pendekatan:
Anda boleh lulus tatasusunan sebagai rujukan untuk mengekalkan maklumat saiznya. Pendekatan ini memerlukan pengubahsuaian tandatangan fungsi, seperti yang ditunjukkan di bawah:
<code class="cpp">void foo(int (&bar)[3]);</code>
Untuk kod generik yang boleh mengendalikan tatasusunan dengan pelbagai saiz, anda boleh mentakrifkan fungsi templat yang mengambil rujukan tatasusunan dari sebarang saiz:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { // Range-based for-loop is valid now }</code>
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, dengan mengingati format soalan dan memfokuskan pada isu teras: **Pilihan 1 (Langsung dan Berfokuskan Masalah):** * **Mengapa Untuk Gelung Berasaskan Julat Gagal pada Tatasusunan yang Dilalui. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!