Heim > Backend-Entwicklung > C++ > Hauptteil

Wie können Sie ein Array von Objekten innerhalb eines C-Konstruktors initialisieren?

Susan Sarandon
Freigeben: 2024-11-06 19:08:02
Original
846 Leute haben es durchsucht

How can you initialize an array of objects within a C   constructor?

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) {}
};
Nach dem Login kopieren

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) {}
};
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!