Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Rujukan Tidak Tertakrif kepada Pembolehubah Statik' dalam C ?

Mengapa Saya Mendapat Ralat 'Rujukan Tidak Tertakrif kepada Pembolehubah Statik' dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-12-15 11:46:10956semak imbas

Why Am I Getting an

Menyelesaikan Ralat "Rujukan Tidak Ditakrifkan kepada Pembolehubah Statik" dalam C

Apabila bekerja dengan pembolehubah kelas statik, anda mungkin menghadapi ralat "rujukan tidak ditentukan kepada pembolehubah statik" dalam C . Artikel ini akan meneroka isu ini dan memberikan penyelesaian.

Pertimbangkan kod berikut sebagai contoh:

class Helloworld {
  public:
    static int x;
    void foo();
};

void Helloworld::foo() {
  Helloworld::x = 10;
}

Setelah menyusun kod ini, anda mungkin menerima ralat "rujukan tidak ditentukan kepada 'Helloworld ::x'". Ini kerana anda tidak memberikan definisi untuk pembolehubah statik x.

Dalam C , pembolehubah kelas statik mesti ditakrifkan di luar definisi kelas. Hanya menambah definisi untuk x dalam skop global akan menyelesaikan ralat:

int Helloworld::x; // Define the static variable

Anda boleh memulakan x dengan sebarang nilai yang sesuai. Jika tiada pemula disediakan, ia akan dimulakan sifar secara lalai.

Oleh itu, kod yang diubah suai akan kelihatan seperti ini:

class Helloworld {
  public:
    static int x;
    void foo();
};

int Helloworld::x = 0; // Initialize the static variable

void Helloworld::foo() {
  Helloworld::x = 10;
}

Kini, pengkompil akan dapat mengesan dengan betul takrifan x dan selesaikan ralat. Ingat, walaupun fungsi foo() bukan statik, ia masih boleh mengakses pembolehubah statik x kelas Helloworld.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Tertakrif kepada Pembolehubah Statik' dalam C ?. 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