C ++: Konstruktorinitialisierer für Arrays

Ich habe einen Gehirnkrampf ... Wie initialisiere ich ein Array von Objekten richtig in C ++?

Nicht-Array-Beispiel:

struct Foo { Foo(int x) { /* ... */  } };

struct Bar { 
     Foo foo;

     Bar() : foo(4) {}
};

Array-Beispiel:

struct Foo { Foo(int x) { /* ... */  } };

struct Baz { 
     Foo foo[3];

     // ??? I know the following syntax is wrong, but what's correct?
     Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};

bearbeiten: Wilde und verrückte Workaround-Ideen werden geschätzt, aber sie helfen mir in meinem Fall nicht weiter. Ich arbeite an einem eingebetteten Prozessor, in dem std :: vector und andere STL-Konstrukte nicht verfügbar sind, und die offensichtliche Problemumgehung besteht darin, einen Standardkonstruktor zu erstellen und einen expliziten zu habeninit() Methode, die nach der Bauzeit aufgerufen werden kann, so dass ich überhaupt keine Initialisierer verwenden muss. (Dies ist einer jener Fälle, in denen ich von Java verwöhnt wurdefinal Schlüsselwort + Flexibilität mit Konstruktoren.)

Antworten auf die Frage(14)

Ihre Antwort auf die Frage