Maison >développement back-end >C++ >Pourquoi une « référence non définie à WindowsTimer :: _ Frequency » se produit-elle et comment est-elle corrigée ?

Pourquoi une « référence non définie à WindowsTimer :: _ Frequency » se produit-elle et comment est-elle corrigée ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 14:21:10272parcourir

Why Does

Référence non définie à un membre statique

Cette erreur se produit lorsque le compilateur ne trouve pas la définition d'une variable membre statique. Dans ce cas, il s'agit de la variable membre statique _fréquence de la classe WindowsTimer.

Comprendre le code

Le code présenté est :

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

Ici, _ Frequency est une variable membre statique de type LARGE_INTEGER, qui est déclarée mais non définie dans le class.

Résolution de l'erreur

Le message d'erreur "référence non définie à WindowsTimer::_ Frequency" indique que le compilateur ne trouve pas la définition de _ Frequency. Les variables membres statiques doivent être définies en dehors de la déclaration de classe, généralement dans le fichier d'implémentation (.cpp).

Pour résoudre l'erreur, ajoutez la définition suivante au fichier .cpp :

LARGE_INTEGER WindowsTimer::_frequency;

Cela créera une variable globale de type LARGE_INTEGER nommée _fréquence qui est liée à la classe WindowsTimer.

Pourquoi les autres changements Cela n'a pas fonctionné

  • Changer _fréquence en _fréquence.QuadPart définirait uniquement le membre QuadPart de la structure LARGE_INTEGER, mais pas la _fréquence elle-même.
  • Changer _fréquence en LARGE_INTEGER statique _ Frequency.QuadPart tenterait de redéfinir _ Frequency en tant que variable statique de type LARGE_INTEGER.QuadPart, ce qui est incorrect.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn