Heim >Backend-Entwicklung >C++ >Warum erhalte ich bei statischen Elementen in C die Fehlermeldung „Undefinierte Referenz'?
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;
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; };
In diesem Fall muss die Definition in der Implementierungsdatei weggelassen werden Initialisierer:
const int Example::initialized;
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:
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!