Heim > Backend-Entwicklung > C++ > Wie initialisiere ich ein Array-Mitglied in einer Elementinitialisiererliste?

Wie initialisiere ich ein Array-Mitglied in einer Elementinitialisiererliste?

Barbara Streisand
Freigeben: 2024-11-29 02:07:08
Original
520 Leute haben es durchsucht

How to Initialize an Array Member in a Member Initializer List?

So initialisieren Sie ein Array-Mitglied in einer Elementinitialisiererliste

Einführung

Initialisierung eines Das Einfügen eines Array-Mitglieds in eine Mitgliederinitialisiererliste kann wie eine einfache Aufgabe erscheinen, kann sich in der Praxis jedoch als schwierig erweisen. In diesem Artikel werden verschiedene Ansätze untersucht und häufige Fragen zu diesem Thema beantwortet.

Problem und Code

Der folgende Codeausschnitt versucht, ein Array-Mitglied im Initialisierer eines Konstruktors zu initialisieren Liste:

class C {
public:
    C() : arr({1,2,3}) //doesn't compile
{}
private:
    int arr[3];
};
Nach dem Login kopieren

Der Code kann jedoch nicht kompiliert werden. Der Grund dafür ist, dass Arrays nur mit dem Zuweisungsoperator = initialisiert werden können, wie zum Beispiel:

int arr[3] = {1,3,4};
Nach dem Login kopieren

Lösungen

  • Verwenden Sie eine Struktur:

Eine Lösung besteht darin, eine Struktur zu verwenden, um das Array zu kapseln und es zu ermöglichen im Konstruktor initialisiert werden. Dies ist im Wesentlichen das, was die Boost.Array-Bibliothek tut.

  • Listeninitialisierung verwenden:

C 11 führt die Listeninitialisierung ein, die verwendet werden kann Initialisiert ein Array in einer Mitgliedsinitialisiererliste. Der folgende Code würde funktionieren:

class C {
public:
    C() : arr{1, 2, 3} { }
private:
    int arr[3];
};
Nach dem Login kopieren

C 03

Der C 03-Standard befasst sich nicht speziell mit der Initialisierung von Aggregaten (einschließlich Arrays) in Konstruktorinitialisierern. Die Ungültigkeit des Originalcodes ist eine Folge der Regeln für die direkte Initialisierung, die die Verwendung von Initialisierungslisten für Arrays verbieten.

C 11

C 11's Listeninitialisierung Die Syntax vereinfacht die Initialisierung von Arrays in Member-Initialisierungslisten. Es ist jedoch wichtig, die richtige Syntax zu verwenden, wie oben gezeigt.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich ein Array-Mitglied in einer Elementinitialisiererliste?. 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