Boucle For basée sur une plage sur un tableau transmis à une fonction non principale
Question :
Dans un projet C, une tentative d'utilisation d'une boucle for basée sur une plage sur un tableau passé à une fonction non principale échoue. Le code renvoie une erreur concernant l'impossibilité de trouver un appel de fonction correspondant pour start(int*&) lors de la tentative d'accès à la boucle for basée sur la plage dans la fonction non principale.
Réponse :
Lorsque vous transmettez un tableau à une fonction non principale, le tableau se désintègre en un pointeur, perdant des informations cruciales sur sa taille. Pour activer la boucle for basée sur une plage dans la fonction non principale :
Utiliser la référence du tableau : Transmettez le tableau par référence au lieu d'un pointeur. Cela préserve les informations de taille :
<code class="cpp">void foo(int (&&bar)[3]);</code>
Approche générique : Utilisez un modèle de fonction avec un paramètre de modèle spécifiant la taille du tableau. Cette approche permet de transmettre différentes tailles de tableau :
<code class="cpp">template <std::size_t array_size> void foo(int (&&bar)[array_size]);</code>
En préservant les informations de taille, la boucle for basée sur la plage peut parcourir correctement les éléments du tableau dans le non- fonction principale.
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!