Heim > Backend-Entwicklung > C++ > C++-Fehler: Nicht statische Datenelemente müssen initialisiert werden. Wie kann ich sie ändern?

C++-Fehler: Nicht statische Datenelemente müssen initialisiert werden. Wie kann ich sie ändern?

PHPz
Freigeben: 2023-08-22 17:45:13
Original
1256 Leute haben es durchsucht

C++-Fehler: Nicht statische Datenelemente müssen initialisiert werden. Wie kann ich sie ändern?

Wenn wir in der C++-Programmierung nicht statische Datenelemente einer Klasse definieren und diese nicht im Konstruktor oder in der Initialisierungsliste initialisiert werden, tritt der folgende Fehler auf: Nicht statische Datenelemente müssen initialisiert werden. Dies wird der Fall sein Dies führt dazu, dass der Compiler dem Mitglied keinen Speicherplatz zuweisen kann und die Klasse daher nicht instanziiert werden kann.

Um dieses Problem zu lösen, können wir folgende Maßnahmen ergreifen:

1. Initialisieren Sie die Mitgliedsvariablen im Konstruktor.

Wenn wir die Mitgliedsvariablen beim Definieren der Klasse nicht initialisieren, können wir sie im Konstruktor initialisieren Der Ansatz ist in manchen Fällen flexibler. Beispiel:

class Person{
public:
    Person() {
        age = 18;
        name = "Tom";
    }

private:
    int age;
    string name;
};
Nach dem Login kopieren

Im obigen Code haben wir die Mitgliedsvariablen „Alter“ und „Name“ beim Definieren der Person-Klasse nicht initialisiert, sondern im Konstruktor initialisiert. Es ist zu beachten, dass bei mehreren Konstruktoren in einer Klasse alle Konstruktoren Mitgliedsvariablen initialisieren müssen.

2. In der Member-Initialisierungsliste initialisieren

In C++ ist die Member-Initialisierungsliste eine Methode, die zum Initialisieren nicht statischer Member-Variablen einer Klasse verwendet wird. Nicht statische Mitgliedsvariablen in einer Klasse können schnell und übersichtlich initialisiert werden, indem nach dem Konstruktornamen ein Doppelpunkt hinzugefügt und die Mitgliedsvariablen und ihre Initialisierungsausdrücke in der Mitgliedsinitialisierungsliste nach dem Konstruktor festgelegt werden. Zum Beispiel:

class Person{
public:
    Person(): age(18), name("Tom"){}

private:
    int age;
    string name;
};
Nach dem Login kopieren

Im obigen Code verwenden wir die Mitgliedsinitialisierungsliste, um die Mitgliedsvariablen für Alter und Name zu initialisieren.

Es ist zu beachten, dass Sie sicherstellen müssen, dass der Typ über einen Standardkonstruktor verfügt, wenn es sich bei dem Typ der Mitgliedsvariablen um einen benutzerdefinierten Typ handelt. Andernfalls kann der Compiler bei der Initialisierung mithilfe einer Member-Initialisierungsliste keinen geeigneten Konstruktor finden.

Zusammenfassung

C++ erfordert, dass nicht statische Datenelemente einer Klasse beim Definieren initialisiert werden müssen, andernfalls tritt ein Fehler auf, dass nicht statische Datenelemente initialisiert werden müssen. Um dieses Problem zu lösen, können wir die Mitgliedsvariablen im Konstruktor initialisieren oder eine Mitgliedsinitialisierungsliste verwenden, um sie zu initialisieren. Stellen Sie in jedem Fall sicher, dass alle Mitgliedsvariablen initialisiert sind.

Das obige ist der detaillierte Inhalt vonC++-Fehler: Nicht statische Datenelemente müssen initialisiert werden. Wie kann ich sie ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage