Rumah >pembangunan bahagian belakang >C++ >Apakah Menyebabkan Ralat \'Rujukan Tidak Ditakrifkan kepada Ahli Statik\' dalam C dan Bagaimana Ianya Diselesaikan?

Apakah Menyebabkan Ralat \'Rujukan Tidak Ditakrifkan kepada Ahli Statik\' dalam C dan Bagaimana Ianya Diselesaikan?

Linda Hamilton
Linda Hamiltonasal
2024-12-09 00:39:13662semak imbas

What Causes

Apakah yang dimaksudkan dengan rujukan yang tidak ditentukan kepada ahli statik?

Dalam C , pembolehubah ahli statik ialah pembolehubah kelas yang wujud secara bebas daripada sebarang contoh objek . Ia biasanya dimulakan pada masa penyusunan dan boleh dikongsi oleh semua kejadian kelas.

Walau bagaimanapun, jika anda mengisytiharkan pembolehubah ahli statik tanpa memberikan definisi, pengkompil akan menghasilkan mesej ralat tentang "rujukan tidak ditentukan ." Ini kerana pengkompil perlu mengetahui lokasi memori pembolehubah statik untuk menjana kod yang mengaksesnya.

Untuk menyelesaikan ralat ini, anda mesti memberikan definisi untuk pembolehubah ahli statik dalam fail sumber ( .cpp fail). Takrifan harus mempunyai nama yang sama seperti pengisytiharan dalam fail pengepala (.h fail), tetapi harus didahului oleh pengendali skop (::). Contohnya:

// header file
class Example {
public: 
    static int x;
};

// source file
int Example::x;

Ini akan menentukan lokasi memori untuk pembolehubah statik x dan membenarkan pengkompil menjana kod yang mengaksesnya.

Kes Khas

  • Jenis kamiran konst atau penghitungan: Untuk pembolehubah ahli statik yang daripada jenis integral atau penghitungan const, anda boleh menyediakan pemula dalam perisytiharan kelas dalam fail pengepala. Takrifan dalam fail sumber seharusnya tidak mempunyai pemula.
  • Templat: Untuk pembolehubah ahli statik templat kelas, takrifan mesti disediakan dalam fail pengepala bersama dengan definisi kelas.

Kegunaan statik lain

Kata kunci statik mempunyai berbeza makna apabila digunakan pada objek atau fungsi yang tidak berada dalam skop kelas:

  • Objek dalam skop fungsi: Mengisytiharkan objek yang dimulakan pada pelaksanaan pertama fungsi dan mengekalkan nilainya antara panggilan fungsi.
  • Objek atau fungsi pada skop ruang nama: Mengisytiharkan objek atau fungsi dengan pautan dalaman, yang ditamatkan untuk objek.

Atas ialah kandungan terperinci Apakah Menyebabkan Ralat \'Rujukan Tidak Ditakrifkan kepada Ahli Statik\' dalam C dan Bagaimana Ianya Diselesaikan?. 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