Maison >développement back-end >C++ >Voici quelques options de titre, en gardant à l'esprit le format de la question et en vous concentrant sur le problème principal : **Option 1 (directe et axée sur le problème) :** * **Pourquoi une boucle For basée sur une plage échoue-t-elle sur les tableaux transmis
Lors de la tentative d'utilisation d'une boucle For basée sur une plage sur un tableau passé en argument à une fonction non principale, vous pouvez rencontrer des erreurs de compilation. En effet, les références de tableau se désintègrent en pointeurs, perdant ainsi des informations sur la taille du tableau.
Pour résoudre ce problème, il existe deux approches :
Vous pouvez passez le tableau comme référence pour conserver ses informations de taille. Cette approche nécessite de modifier la signature de la fonction, comme indiqué ci-dessous :
<code class="cpp">void foo(int (&bar)[3]);</code>
Pour un code générique pouvant gérer des tableaux de différentes tailles, vous pouvez définir un fonction de modèle qui prend une référence de tableau de n'importe quelle taille :
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { // Range-based for-loop is valid now }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!