Initialisierung des C-Array-Konstruktors
Das Initialisieren eines Arrays von Objekten in C kann eine Herausforderung sein, insbesondere im Vergleich zu Nicht-Array-Beispielen. Betrachten Sie die folgende Nicht-Array-Initialisierung:
struct Foo { Foo(int x) { /* ... */ } }; struct Bar { Foo foo; Bar() : foo(4) {} };
In diesem Beispiel wird das Foo-Objekt innerhalb der Bar-Struktur mithilfe der Initialisierungsliste im Konstruktor ordnungsgemäß initialisiert. Das Initialisieren eines Arrays von Objekten erfordert jedoch einen anderen Ansatz.
struct Foo { Foo(int x) { /* ... */ } }; struct Baz { Foo foo[3]; Baz() : foo[0](4), foo[1](5), foo[2](6) {} };
Die im obigen Beispiel gezeigte falsche Syntax verdeutlicht die Herausforderung, Array-Elemente einzeln zu initialisieren.
Lösung
Leider gibt es laut der bereitgestellten Antwort keine Standardmethode, um ein Array von Objekten in C innerhalb des Konstruktors zu initialisieren. Stattdessen muss ein Standardkonstruktor für die Array-Mitglieder verwendet werden, und jede notwendige Initialisierung kann nach der Konstruktionszeit durchgeführt werden.
Diese Einschränkung ist auf die Einschränkungen des verwendeten eingebetteten Prozessors zurückzuführen, der modernes C nicht unterstützt Standards. Als Workaround schlägt der Autor vor, einen Standardkonstruktor und eine explizite init()-Methode zu erstellen, um die Initialisierung nach der Konstruktion durchzuführen. Obwohl dieser Ansatz möglicherweise nicht ideal ist, überwindet er das Fehlen von Konstruktorinitialisierern für Arrays.
Das obige ist der detaillierte Inhalt vonWie können Sie ein Array von Objekten innerhalb eines C-Konstruktors initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!