Heim >Backend-Entwicklung >C++ >Wie initialisiere ich Arrays von Objekten mit Konstruktoren in C?
C: Konstruktorinitialisierer für Arrays
In C kann das Initialisieren eines Arrays von Objekten eine Herausforderung sein. Für Nicht-Array-Szenarien kann man die Konstruktor-Syntax wie folgt verwenden:
struct Foo { Foo(int x) { /* ... */ } }; struct Bar { Foo foo; Bar() : foo(4) {} };
Das Problem tritt jedoch beim Umgang mit Arrays auf:
struct Foo { Foo(int x) { /* ... */ } }; struct Baz { Foo foo[3]; // Incorrect syntax Baz() : foo[0](4), foo[1](5), foo[2](6) {} };
Leider ist in C (vor mehr In neueren Iterationen der Sprache gibt es keine einfache Methode zum Initialisieren von Array-Mitgliedern mithilfe von Konstruktoren. Die Einschränkung ergibt sich aus der Anforderung von Standardkonstruktoren für Array-Mitglieder, die während der Array-Initialisierung automatisch aufgerufen werden. Anschließend wird jede weitere Initialisierung innerhalb des Konstruktors fortgesetzt. Für eingebettete Systeme ohne STL-Funktionalität besteht eine Problemumgehung darin, einen Standardkonstruktor neben einer expliziten init()-Methode zu verwenden, die nach der Konstruktion aufgerufen werden kann, wodurch die Notwendigkeit von Initialisierern entfällt.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich Arrays von Objekten mit Konstruktoren in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!