Gibt es eine Möglichkeit, einen C ++ - Strukturwert zu erstellen - alle POD-Elementvariablen zu initialisieren?

7

Angenommen, ich habe eine C ++ - Struktur mit POD- und Nicht-POD-Membervariablen:

%Vor%

und damit mein Programm reproduzierbares Verhalten erzeugt, möchte ich, dass alle Elementvariablen bei der Konstruktion initialisiert werden. Ich kann dafür eine Initialisierungsliste verwenden:

%Vor%

Das Problem ist, sobald ich meine Struktur ändern und eine neue POD-Mitgliedsvariable hinzufügen muss (zB bool Bool ). Ich riskiere es zu vergessen, sie der Initialisierungsliste hinzuzufügen. Dann wird die neue Elementvariable während der Strukturkonstruktion nicht initialisiert.

Außerdem kann ich den memset() Trick nicht benutzen:

%Vor%

, weil das Aufrufen von memset() zum Überschreiben bereits konstruierter Nicht-POD-Member-Variablen diese unterbrechen kann.

Gibt es eine Möglichkeit, die Wertinitialisierung aller POD-Elementvariablen zu erzwingen, ohne in diesem Fall ihre Initialisierung explizit hinzuzufügen?

    
sharptooth 14.10.2010, 07:05
quelle

3 Antworten

10

Der sauberste Weg wäre, die automatisch initialisierte Template-Klasse initialized<T> :

zu schreiben

BEARBEITEN: Mir ist klar, dass es jetzt noch flexibler gemacht werden kann, indem man initialized<Struct> deklariert. Dies bedeutet, dass Sie die Initialisierung deklarieren können, ohne das ursprüngliche Struct zu ändern. Die Standardinitialisierung 'T ()' wurde von Prasons Antwort inspiriert.

%Vor%

Dies wird kompiliert, benötigt aber möglicherweise mehr Konvertierungsoperatoren, die Handhabung von Schlüsselwörtern wie flüchtig, etc. Aber Sie bekommen die Idee.

    
user180326 14.10.2010, 07:34
quelle
10

Verknüpfte Frage hier

  

Gibt es eine Möglichkeit, die Wertinitialisierung aller POD-Elementvariablen zu erzwingen, ohne in diesem Fall ihre Initialisierung explizit hinzuzufügen?

Ich bin mir nicht sicher, ob so etwas möglich ist oder nicht, aber die folgenden Arbeiten

%Vor%     
Prasoon Saurav 14.10.2010 07:16
quelle
-1

Sie können eine Basisstruktur hinzufügen:

%Vor%

Und dann Ihre Struktur abgeleitet von dieser Basisstruktur, erster Platz, wenn Sie mehr als eine Basisstrukturen haben,

%Vor%     
Jinyuan 14.10.2010 08:15
quelle

Tags und Links