Wie initialisiert man ein Member-Array der Klasse im Konstruktor?

7

Ich versuche folgendes zu tun:

%Vor%

Ich bekomme einen Fehler

  

fehlender Ausdruck im Konstruktor.

Also, wie initialisiere ich ein Array?

    
chintan s 23.07.2012, 10:02
quelle

6 Antworten

14

Nur in C ++ 11:

%Vor%

Vor 11 war es nicht möglich, andere Arrays als automatische und statische im Blockbereich oder statische im Namespacebereich zu initialisieren.

    
Kerrek SB 23.07.2012, 10:08
quelle
7
  

Also, wie initialisiere ich ein Array?

Verwenden der normalen Initialisierungslisten-Syntax:

%Vor%

Beachten Sie, das funktioniert nur in C ++ 11. Vorher müssen Sie boost::array verwenden und in einer Funktion initialisieren.

    
Konrad Rudolph 23.07.2012 10:09
quelle
3

Wenn Ihr Compiler die Initialisierung von C ++ 11 nicht unterstützt, müssen Sie jedes Feld einzeln zuweisen:

%Vor%     
Some programmer dude 23.07.2012 10:15
quelle
2

Wenn Ihr aktueller Compiler C ++ 11 noch nicht unterstützt, können Sie den Vektorinhalt mit Standardalgorithmen und Funktoren initialisieren:

%Vor%

Vorheriges Snippet-Beispiel hier .

Ja, ist irgendwie hässlich (zumindest sieht es für mich hässlich aus) und macht die Arbeit nicht zur Kompilierzeit; aber es macht die Arbeit, die Sie im Konstruktor brauchen.

Wenn Sie eine andere Art von Initialisierung benötigen (Initialisierung mit geraden / ungeraden Zahlen, Initialisierung mit zufälligen Werten, Start mit einem anderen Wert, etc ...), müssen Sie nur den Functor ändern, und dies ist der einzige Vorteil hässlicher Ansatz.

    
Paula_plus_plus 13.09.2012 12:29
quelle
1

Sie können die Array-Elemente wie folgt mit dem C ++ 11-Compiler initialisieren, indem Sie die Option -std = c ++ 11 oder -std = gnu ++ 11 verwenden

%Vor%     
Mayur Lokare 03.10.2017 15:17
quelle
-3
%Vor%     
Shahzeb 23.07.2012 10:05
quelle

Tags und Links