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
954 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!

sumber:php.cn
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