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

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