Initialisierungsliste für Array-Mitglieder
Das bereitgestellte Code-Snippet kann aufgrund eines Versuchs, ein Array in einer Mitgliedsinitialisierungsliste mit zu initialisieren, nicht kompiliert werden die folgende Syntax:
`
C() : arr({1,2,3}) <br>{}<br>// kompiliert auch nicht<br>C() : arr{1,2,3} <br>{}`
Das liegt daran Arrays in C 03 können nur mit dem Zuweisungsoperator initialisiert werden, z.B. int arr[3] = {1,3,4}.
Lösungen
Verwenden einer Struktur:
Der bereitgestellte Code kann kann behoben werden, indem das Array mit einer Struktur umschlossen und im Konstruktor initialisiert wird folgt:
`
int arr[3];<br> ArrayWrapper() : arr{1,2,3} {}<br>};<br>`
Verwenden der C 11-Listeninitialisierung:
In C 11, Sie kann die Listeninitialisierung verwenden, um Arrays in einer Mitgliedsinitialisiererliste zu initialisieren:
`
int arr[3];<br> ArrayWrapper() : arr{1, 2, 3} {}<br> };<br>`
Standard Konformität:
Das Verhalten wird im C 03-Standard nicht explizit angesprochen, ist aber eine Folge der Regel, dass die Aggregatinitialisierung den Zuweisungsoperator verwenden muss.
C 11 Klarstellung:
C 11 erlaubt explizit die Initialisierung von Arrays in Mitgliedsinitialisiererlisten mithilfe der Listeninitialisierung.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich Arrays in Member-Initialisierungslisten in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!