Problem mit der Referenzierung statischer Variablen in C
In C kann der Zugriff auf statische Variablen innerhalb nicht statischer Klassenmethoden zu Kompilierungsfehlern führen, wenn die statischen Variable ist nicht richtig definiert. Ein häufiger Fehler ist „undefinierter Verweis auf statische Variable“.
Das Problem
Bedenken Sie den folgenden Codeausschnitt:
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; }
Dieser Code zielt darauf ab, über die nicht-statische Methode foo() auf die statische Variable x zuzugreifen. Das Kompilieren dieses Codes kann jedoch zum Fehler „Undefinierter Verweis auf statische Variable“ führen, da der statischen Variablen x eine Definition fehlt.
Die Lösung
Die Lösung ist: Geben Sie eine Definition für die statische Variable x außerhalb der Klassendefinition an. Die Definition kann nach der Klassendefinition hinzugefügt werden, wie unten gezeigt:
class Helloworld { public: static int x; void foo(); }; // Definition of static variable x int Helloworld::x = 0; // Initialize x to 0 (or any appropriate value) void Helloworld::foo() { Helloworld::x = 10; }
Durch die Definition der statischen Variablen x außerhalb der Klassendefinition kann der Compiler Speicher für x finden und zuweisen. Darüber hinaus ist es wichtig, die statische Variable auf einen bestimmten Wert zu initialisieren oder zuzulassen, dass sie bei Fehlen eines Initialisierers auf Null initialisiert wird.
Mit diesen Änderungen wird der Code erfolgreich kompiliert und ausgeführt, sodass Sie dies tun können Greifen Sie über nicht statische Mitgliedsfunktionen der Helloworld-Klasse auf die statische Variable x zu.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Zugriff auf statische Variablen in C die Fehlermeldung „Undefinierter Verweis auf statische Variable'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!