Heim >Backend-Entwicklung >C++ >Warum führt der Zugriff auf eine statische Klassenvariable über eine nicht-statische Methode in C zu einer undefinierten Referenz?
Zugriff auf statische Klassenvariablen über eine nicht-statische Methode
Wenn in C ein undefinierter Verweis auf eine statische Variable auftritt, z. B. in Bei einem gegebenen Codeausschnitt liegt das Problem normalerweise im Fehlen einer Definition für diese Variable.
Im bereitgestellten Beispiel versucht der Code dies Um über die nicht-statische Methode foo auf die statische Variable x zuzugreifen, ist es wichtig zu beachten, dass foo keine eine statische Funktion ist. Um dieses Problem zu beheben, muss daher eine Definition für Helloworld::x außerhalb der Klassendefinition bereitgestellt werden.
int Helloworld::x = 0; // Provide an initial value or leave uninitialized
Sobald die statische Variable definiert ist, kann die nicht-statische Methode foo darauf zugreifen und sie ändern ohne dass foo selbst statisch sein muss.
void Helloworld::foo() { Helloworld::x = 10; }
Durch die Bereitstellung einer Definition für die statische Mitgliedsvariable kann der Compiler ihre Speicheradresse lokalisieren und die undefinierte Referenz auflösen.
Das obige ist der detaillierte Inhalt vonWarum führt der Zugriff auf eine statische Klassenvariable über eine nicht-statische Methode in C zu einer undefinierten Referenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!