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

Wie initialisiere ich ein Array-Mitglied in einer Elementinitialisiererliste?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 02:07:08522Durchsuche

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];
};

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};

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];
};

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!

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