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
Lepaskan: 2024-12-15 11:46:10
asal
1045 orang telah melayarinya

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;
}
Salin selepas log masuk

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
Salin selepas log masuk

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;
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan