Rumah >pembangunan bahagian belakang >C++ >Mengapa 'rujukan tidak ditentukan kepada WindowsTimer::_frequency' Berlaku dan Bagaimana Ia Dibetulkan?

Mengapa 'rujukan tidak ditentukan kepada WindowsTimer::_frequency' Berlaku dan Bagaimana Ia Dibetulkan?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 14:21:10270semak imbas

Why Does

Rujukan Tidak Ditakrifkan kepada Ahli Statik

Ralat ini berlaku apabila pengkompil tidak dapat mencari definisi pembolehubah ahli statik. Dalam kes ini, ia berkaitan dengan pembolehubah statik ahli _frequency kelas WindowsTimer.

Memahami Kod

Kod yang dibentangkan ialah:

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

Di sini, _frequency ialah pembolehubah ahli statik jenis LARGE_INTEGER, yang diisytiharkan tetapi tidak ditakrifkan dalam kelas.

Menyelesaikan Ralat

Mesej ralat "rujukan tidak ditentukan kepada WindowsTimer::_frequency" menunjukkan bahawa pengkompil tidak dapat mencari takrifan _frequency. Pembolehubah ahli statik mesti ditakrifkan di luar pengisytiharan kelas, biasanya dalam fail pelaksanaan (.cpp).

Untuk menyelesaikan ralat, tambahkan takrifan berikut pada fail .cpp:

LARGE_INTEGER WindowsTimer::_frequency;

Ini akan mencipta pembolehubah global jenis LARGE_INTEGER bernama _frequency yang dipautkan ke WindowsTimer kelas.

Mengapa Perubahan Lain Tidak Berfungsi

  • Menukar _frequency kepada _frequency.QuadPart hanya akan mentakrifkan ahli QuadPart bagi struktur LARGE_INTEGER, tetapi tidak _frekuensi itu sendiri.
  • Berubah _frequency kepada statik LARGE_INTEGER _frequency.QuadPart akan cuba mentakrifkan semula _frequency sebagai pembolehubah statik dengan jenis LARGE_INTEGER.QuadPart, yang tidak betul.

Atas ialah kandungan terperinci Mengapa 'rujukan tidak ditentukan kepada WindowsTimer::_frequency' Berlaku dan Bagaimana Ia Dibetulkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn