Heim >Backend-Entwicklung >C++ >Warum tritt ein „undefinierter Verweis auf WindowsTimer::_frequenz' auf und wie wird das Problem behoben?

Warum tritt ein „undefinierter Verweis auf WindowsTimer::_frequenz' auf und wie wird das Problem behoben?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 14:21:10272Durchsuche

Why Does

Undefinierter Verweis auf ein statisches Mitglied

Dieser Fehler tritt auf, wenn der Compiler die Definition einer statischen Mitgliedsvariablen nicht finden kann. In diesem Fall handelt es sich um die statische Mitgliedsvariable _frequenz der WindowsTimer-Klasse.

Den Code verstehen

Der angezeigte Code ist:

class WindowsTimer {
public:
  WindowsTimer() {
    _frequency.QuadPart = 0ull;
  }
private:
  static LARGE_INTEGER _frequency;
};

Hier ist _frequenz eine statische Mitgliedsvariable vom Typ LARGE_INTEGER, die innerhalb der deklariert, aber nicht definiert wird Klasse.

Beheben des Fehlers

Die Fehlermeldung „undefinierter Verweis auf WindowsTimer::_frequenz“ weist darauf hin, dass der Compiler die Definition von _frequenz nicht finden kann. Statische Mitgliedsvariablen müssen außerhalb der Klassendeklaration definiert werden, normalerweise in der Implementierungsdatei (.cpp).

Um den Fehler zu beheben, fügen Sie der .cpp-Datei die folgende Definition hinzu:

LARGE_INTEGER WindowsTimer::_frequency;

Dadurch wird eine globale Variable vom Typ LARGE_INTEGER mit dem Namen _frequenz erstellt, die mit der WindowsTimer-Klasse verknüpft ist.

Warum das Andere Änderungen haben nicht funktioniert

  • Das Ändern von _frequenz in _frequenz.QuadPart würde nur das QuadPart-Mitglied der LARGE_INTEGER-Struktur definieren, nicht jedoch die _frequenz selbst.
  • Das Ändern von _frequenz in statisch LARGE_INTEGER _frequenz.QuadPart würde versuchen, _frequenz als statische Variable mit Typ neu zu definieren LARGE_INTEGER.QuadPart, was falsch ist.

Das obige ist der detaillierte Inhalt vonWarum tritt ein „undefinierter Verweis auf WindowsTimer::_frequenz' auf und wie wird das Problem behoben?. 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