Heim > Backend-Entwicklung > C++ > Warum erhalte ich bei statischen Elementen in C die Fehlermeldung „Undefinierte Referenz'?

Warum erhalte ich bei statischen Elementen in C die Fehlermeldung „Undefinierte Referenz'?

Mary-Kate Olsen
Freigeben: 2024-12-07 22:27:13
Original
461 Leute haben es durchsucht

Why Am I Getting

Undefinierte Verweise auf statische Mitglieder: Ein Leitfaden für Anfänger

Statische Datenmitglieder werden häufig verwendet, um Informationen über Instanzen einer Klasse hinweg auszutauschen. Allerdings stoßen Entwickler bei der Verwendung statischer Datenelemente gelegentlich auf Fehler „undefinierter Verweis“. Dieses Problem entsteht aufgrund der Unterscheidung zwischen Deklarationen und Definitionen.

Deklarationen und Definitionen verstehen

Eine Deklaration stellt dem Compiler die Existenz einer Variablen vor, ohne ihren Speicherort anzugeben. Eine Definition hingegen reserviert Speicher für die Variable und stellt ihre Adresse bereit.

Bei statischen Datenmitgliedern erfolgt ihre Deklaration innerhalb der Klassendefinition, weist ihnen jedoch keine Adresse zu. Die tatsächliche Definition muss separat bereitgestellt werden.

Statische Datenelemente definieren

Um „undefinierte Referenz“-Fehler zu beheben, definieren Sie statische Datenelemente explizit außerhalb der Klassendefinition, normalerweise in die Implementierungsdatei (.cpp). Betrachten Sie beispielsweise den folgenden Code:

// Header file (.h)
class Example {
    static bool exampleStaticMember;
};

// Implementation file (.cpp)
bool Example::exampleStaticMember;
Nach dem Login kopieren

Ausnahme für Integral- und Aufzählungstypen

Statische Datenelemente von Integral- oder Aufzählungstypen können direkt innerhalb der Klasse initialisiert werden Definition:

class Example {
    static const int initialized = 15;
};
Nach dem Login kopieren

In diesem Fall muss die Definition in der Implementierungsdatei weggelassen werden Initialisierer:

const int Example::initialized;
Nach dem Login kopieren

Statische Datenelemente in Vorlagen

Für Vorlagen werden statische Datenelemente zusammen mit der Klassendeklaration in der Header-Datei definiert. Die Ausnahme von der One-Definition-Regel erlaubt mehrere Definitionen von statischen Datenelementen von Klassenvorlagen.

Andere Verwendungen von „static“

Über den Klassenbereich hinaus hat „static“. zusätzliche Bedeutungen:

  • Im Funktionsumfang wird ein persistentes Objekt erstellt, das seinen Wert über die gesamte Funktion hinweg behält Aufrufe.
  • Im Namespace-Bereich werden Objekte und Funktionen mit interner Verknüpfung deklariert, obwohl von dieser Verwendung für Objekte abgeraten wird.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich bei statischen Elementen in C die Fehlermeldung „Undefinierte Referenz'?. 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