Beim Arbeiten mit statischen Klassenvariablen kann in C der Fehler „Undefinierter Verweis auf statische Variable“ auftreten . In diesem Artikel wird das Problem untersucht und eine Lösung bereitgestellt.
Betrachten Sie den folgenden Code als Beispiel:
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; }
Beim Kompilieren dieses Codes erhalten Sie möglicherweise die Fehlermeldung „undefinierter Verweis auf „Helloworld“. ::X'". Dies liegt daran, dass Sie keine Definition für die statische Variable x angegeben haben.
In C müssen statische Klassenvariablen außerhalb der Klassendefinition definiert werden. Durch einfaches Hinzufügen einer Definition für x im globalen Bereich wird der Fehler behoben:
int Helloworld::x; // Define the static variable
Sie können x mit jedem geeigneten Wert initialisieren. Wenn kein Initialisierer bereitgestellt wird, wird er standardmäßig mit Null initialisiert.
Daher sieht der geänderte Code wie folgt aus:
class Helloworld { public: static int x; void foo(); }; int Helloworld::x = 0; // Initialize the static variable void Helloworld::foo() { Helloworld::x = 10; }
Jetzt kann der Compiler die korrekte Lokalisierung durchführen die Definition von x und beheben Sie den Fehler. Denken Sie daran, dass die Funktion foo() zwar nicht statisch ist, aber dennoch auf die statische Variable x der Helloworld-Klasse zugreifen kann.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in C den Fehler „Undefinierter Verweis auf statische Variable'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!