Heim >Backend-Entwicklung >C++ >Warum erhalte ich in C den Fehler „Undefinierter Verweis auf statische Variable'?

Warum erhalte ich in C den Fehler „Undefinierter Verweis auf statische Variable'?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 11:46:10956Durchsuche

Why Am I Getting an

Fehler „Undefinierter Verweis auf statische Variable“ in C beheben

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!

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