Heim > Backend-Entwicklung > C++ > Wie initialisiere ich C-Arrays von Objekten in einer eingebetteten Umgebung?

Wie initialisiere ich C-Arrays von Objekten in einer eingebetteten Umgebung?

Barbara Streisand
Freigeben: 2024-11-06 17:21:03
Original
1093 Leute haben es durchsucht

How to Initialize C   Arrays of Objects in an Embedded Environment?

Konstruktorinitialisierung für C-Arrays

Das Initialisieren von Arrays von Objekten in C kann aufgrund des Fehlens einer ähnlichen Array-Initialisierersyntax eine Herausforderung sein verfügbar für Nicht-Array-Objekte.

Betrachten Sie das folgende Nicht-Array-Beispiel:

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

struct Bar {
    Foo foo;

    Bar() : foo(4) {}
};
Nach dem Login kopieren

In diesem Beispiel initialisiert der Bar-Konstruktor das foo-Mitgliedsobjekt mithilfe der Initialisierungssyntax: foo(4 ).

Bei Arrays ist die Situation jedoch anders. Die folgende Syntax ist falsch:

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

Lösung

Leider im Kontext von C 98 (was hier der Fall zu sein scheint, wie der eingebettete Prozessor vermuten lässt). Einschränkung) gibt es keine Möglichkeit, die Initialisierung von Array-Mitgliedern mithilfe von Konstruktorinitialisierern zu erreichen. Die Problemumgehung besteht darin, einen Standardkonstruktor für Array-Mitglieder bereitzustellen und alle erforderlichen Initialisierungen innerhalb des Konstruktors durchzuführen.

Zum Beispiel:

struct Foo {
    Foo() : value(0) { /* ... */ }  // Default constructor with a default value

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

struct Baz {
    Foo foo[3];

    Baz() {
        foo[0] = Foo(4);
        foo[1] = Foo(5);
        foo[2] = Foo(6);
    }
};
Nach dem Login kopieren

Dieser Ansatz ist zwar nicht so elegant wie die direkte Initialisierung, aber er ermöglicht das Erstellen und Initialisieren von Arrays von Objekten, ohne auf externe Initialisierungsmethoden oder STL-Konstrukte zurückgreifen zu müssen, die in eingebetteten Umgebungen möglicherweise nicht verfügbar sind.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich C-Arrays von Objekten in einer eingebetteten Umgebung?. 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