Liste d'initialisation pour les membres du tableau
L'extrait de code fourni ne parvient pas à se compiler en raison d'une tentative d'initialisation d'un tableau dans une liste d'initialisation de membre à l'aide la syntaxe suivante :
`
C() : arr({1,2,3}) <br>{}<br>// ne compile pas non plus<br>C() : arr{1,2,3} <br>{}`
C'est parce que les tableaux en C 03 ne peuvent être initialisés qu'avec l'opérateur d'affectation, par ex. int arr[3] = {1,3,4}.
Solutions
Utilisation d'une structure :
Le code fourni peut être corrigé en utilisant une structure pour envelopper le tableau et en l'initialisant dans le constructeur, comme suit :
`
int arr[3];<br> ArrayWrapper() : arr{1,2,3} {}<br>};<br>`
Utilisation de l'initialisation de liste C 11 :
En C 11, vous pouvez utiliser l'initialisation de liste pour initialiser des tableaux dans une liste d'initialisation de membre :
`
int arr[3];<br> ArrayWrapper() : arr{1, 2, 3} {}<br>};<br>`
Standard Conformité :
Le comportement n'est pas explicitement abordé dans la norme C 03, mais c'est un corollaire de la règle selon laquelle l'initialisation agrégée doit utiliser l'opérateur d'affectation.
C 11 Clarification :
C 11 autorise explicitement l'initialisation de tableaux dans les listes d'initialisation de membres à l'aide de l'initialisation de liste.
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!