Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Mendapat \'Rujukan Tidak Ditakrifkan\' Apabila Menggunakan Ahli Kelas Statik dalam C ?

Mengapa Saya Mendapat \'Rujukan Tidak Ditakrifkan\' Apabila Menggunakan Ahli Kelas Statik dalam C ?

Patricia Arquette
Lepaskan: 2024-12-11 03:07:08
asal
751 orang telah melayarinya

Why Do I Get

Rujukan Tidak Ditakrifkan kepada Ahli Kelas Statik

Dalam C , ahli statik yang ditakrifkan dalam kelas memerlukan pengendalian yang betul untuk mengelakkan ralat penyusunan.

Sebab Undefined Rujukan

Ahli statik, walaupun diisytiharkan dalam definisi kelas, tidak ditakrifkan secara automatik melainkan dilakukan secara eksplisit di tempat lain. Ini kerana pengisytiharan berbeza daripada takrifan dalam C . Pengisytiharan hanya memperkenalkan ahli, manakala definisi memperuntukkan memori dan memberikan nilai awal.

Contoh

Pertimbangkan kelas berikut dengan ahli statik yang tidak diisytiharkan:

class Example {
    static bool exampleStaticMember;
};
Salin selepas log masuk

Percubaan untuk menggunakan exampleStaticMember tanpa mentakrifkannya akan mengakibatkan "undefined references".

Keperluan Definisi

Untuk menyelesaikan isu ini, ahli statik mesti ditakrifkan secara eksplisit, biasanya dalam fail sumber (.cpp) yang mengandungi kelas takrifan. Takrifan hanya mengisytiharkan ahli sekali lagi dengan jenis datanya dan koma bertitik (';').

bool Example::exampleStaticMember;
Salin selepas log masuk

Kes Khas

  • Const Ahli Statik Kamiran/Enumerasi: Ini boleh dimulakan dalam definisi kelas itu sendiri.
  • Ahli Templat Statik: Ahli statik templat kelas memerlukan definisi dalam fail pengepala.

Penggunaan Statik Lain

Perhatikan bahawa kata kunci statik mempunyai makna yang berbeza apabila digunakan di luar kelas:

  • Objek Statik dalam Fungsi: Mengisytiharkan objek yang mengekalkan nilainya antara panggilan fungsi.
  • Objek/Fungsi Statik dalam Skop Ruang Nama: Mengisytiharkan objek/fungsi dengan pautan dalaman.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \'Rujukan Tidak Ditakrifkan\' Apabila Menggunakan Ahli Kelas 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