Ich benutze einen Cross-Compiler. Mein Code lautet:
class WindowsTimer{
public:
WindowsTimer(){
_frequency.QuadPart = 0ull;
}
private:
static LARGE_INTEGER _frequency;
};
Ich erhalte folgende Fehlermeldung:
undefinierter Verweis auf "WindowsTimer :: _ Frequenz"
Ich habe auch versucht, es zu ändern
LARGE_INTEGER _frequency.QuadPart = 0ull;
oder
static LARGE_INTEGER _frequency.QuadPart = 0ull;
aber ich bekomme immer noch Fehler.
weiß jemand warum?
WindowsTimer::_frequency
?Antworten:
Sie müssen
_frequency
in der CPP-Datei definieren.dh
quelle
Linker weiß nicht, wo Daten zugeordnet werden sollen,
_frequency
und Sie müssen dies manuell mitteilen. Sie können dies erreichen, indem Sie einfach diese Zeile hinzufügen:LARGE_INTEGER WindowsTimer::_frequency = 0;
in eine Ihrer C ++ - Quellen.Detailliertere Erklärung hier
quelle
Mit C ++ 17 können Sie Ihre Variable inline deklarieren , ohne sie mehr in einer CPP-Datei definieren zu müssen.
quelle
error: 'foobar' declared as an 'inline' field
Wenn in der Klasse eine statische Variable deklariert ist, sollten Sie sie in der cpp-Datei wie folgt definieren
quelle