Heim >Backend-Entwicklung >C++ >Warum führt der Zugriff auf eine statische Klassenvariable über eine nicht-statische Methode in C zu einer undefinierten Referenz?

Warum führt der Zugriff auf eine statische Klassenvariable über eine nicht-statische Methode in C zu einer undefinierten Referenz?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 05:31:13280Durchsuche

Why Does Accessing a Static Class Variable from a Non-Static Method in C   Cause an Undefined Reference?

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!

Stellungnahme:
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