Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Pembolehubah Statik' dalam C dan Bagaimana Saya Boleh Membetulkannya Tanpa Menggunakan Kaedah Statik?

Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Pembolehubah Statik' dalam C dan Bagaimana Saya Boleh Membetulkannya Tanpa Menggunakan Kaedah Statik?

Barbara Streisand
Lepaskan: 2024-12-19 16:03:09
asal
878 orang telah melayarinya

Why Do I Get an

Rujukan Tidak Ditakrifkan kepada Pembolehubah Statik dalam C

Apabila bekerja dengan pembolehubah statik dalam C , pembangun sering menghadapi ralat "rujukan tidak ditentukan kepada pembolehubah statik ." Artikel ini meneroka isu ini dan menyediakan penyelesaian tanpa menggunakan kaedah statik.

Masalah:

Pertimbangkan kod berikut:

class Helloworld {
  public:
     static int x;
     void foo();
};
void Helloworld::foo() {
     Helloworld::x = 10;
};
Salin selepas log masuk

Ini kod mencetuskan ralat "rujukan tidak ditentukan" kerana pembolehubah statik x dirujuk dalam kaedah bukan statik foo(), tetapi ia tidak mempunyai definisi.

Penyelesaian:

Untuk menyelesaikan isu ini, adalah penting untuk memberikan definisi untuk pembolehubah ahli statik x di luar definisi kelas. Ini boleh dicapai seperti berikut:

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

// Define the static variable outside the class
int Helloworld::x = 0;

void Helloworld::foo() {
     Helloworld::x = 10;
};
Salin selepas log masuk

Dengan menyatakan nilai awal sebagai 0 atau membiarkannya tidak ditentukan, x akan dimulakan sifar. Sebagai alternatif, nilai awal yang lebih sesuai boleh diberikan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Pembolehubah Statik' dalam C dan Bagaimana Saya Boleh Membetulkannya Tanpa Menggunakan Kaedah Statik?. 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