Référence indéfinie à un membre statique

J’utilise un compilateur croisé. Mon code est:

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

Je reçois l’erreur suivante:

référence indéfinie à `WindowsTimer :: _ frequency ‘

J’ai aussi essayé de le changer pour

 LARGE_INTEGER _frequency.QuadPart = 0ull; 

ou

 static LARGE_INTEGER _frequency.QuadPart = 0ull; 

mais j’ai toujours des erreurs.

quelqu’un sait pourquoi?

Vous devez définir _frequency dans le fichier .cpp.

c’est à dire

 LARGE_INTEGER WindowsTimer::_frequency; 

Linker ne sait pas où allouer les données pour _frequency et vous devez le dire manuellement. Vous pouvez y parvenir en ajoutant simplement cette ligne: LARGE_INTEGER WindowsTimer::_frequency = 0; dans l’une de vos sources C ++.

Explication plus détaillée ici

S’il y a une variable statique déclarée dans la classe, vous devez la définir dans le fichier cpp comme ceci

 LARGE_INTEGER WindowsTimer::_frequency = 0;