Heim  >  Artikel  >  Backend-Entwicklung  >  Wie initialisiere ich Arrays von Objekten mit Konstruktoren in C?

Wie initialisiere ich Arrays von Objekten mit Konstruktoren in C?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-09 05:23:02765Durchsuche

How to Initialize Arrays of Objects with Constructors 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn