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
Barbara Streisandasal
2024-12-19 16:03:09862semak imbas

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;
};

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;
};

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:
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