Rumah > pembangunan bahagian belakang > C++ > Mengapa Mentakrifkan Ahli Kelas Jenis Yang Sama Menghasilkan Ralat \'Jenis Tidak Lengkap\'?

Mengapa Mentakrifkan Ahli Kelas Jenis Yang Sama Menghasilkan Ralat \'Jenis Tidak Lengkap\'?

Linda Hamilton
Lepaskan: 2024-11-19 12:41:03
asal
993 orang telah melayarinya

Why Does Defining a Class Member of the Same Type Result in an

Jenis Tidak Lengkap dalam Struktur Kelas

Merangkum objek dalam diri mereka boleh menjadi corak reka bentuk yang berguna, tetapi ralat biasa timbul apabila cuba mentakrifkan kelas dengan ahli yang sama jenis. Pertimbangkan contoh berikut:

class A {
    private:
        A member;
}
Salin selepas log masuk

Setelah disusun, ralat "jenis tidak lengkap" ditemui. Ini kerana, apabila mentakrifkan pembolehubah ahli, kelas A itu sendiri masih dalam proses ditakrifkan, menjadikan jenisnya tidak ditentukan.

Walau bagaimanapun, menggunakan penuding kepada jenis kelas mengelakkan isu ini:

class A {
    private:
        A* member;
}
Salin selepas log masuk

Ini kerana, pada masa penuding diisytiharkan, pengkompil mengiktiraf A sebagai nama kelas yang sah, membenarkan "penunjuk ke Jenis A" untuk ditakrifkan dengan baik.

Dalam kes di mana jenis ahli bukan penunjuk diperlukan, pendekatan alternatif boleh digunakan:

  • Pengisytiharan Hadapan: Pendekatan ini melibatkan pengisytiharan kelas tanpa mentakrifkannya, seperti dalam:
class A;
Salin selepas log masuk

Ini memberitahu pengkompil bahawa A ialah jenis kelas, membenarkan ia dirujuk sebagai ahli bukan penuding:

class B {
    private:
        A member;
};
Salin selepas log masuk
  • Penunjuk Pintar: Ini menyediakan cara yang lebih selamat untuk mengurus objek dengan pengurusan memori yang kompleks, seperti pemilikan dikongsi:
class A {
    private:
        boost::shared_ptr<A> member;
};
Salin selepas log masuk

Walaupun penunjuk mungkin mudah untuk dirujuk jenis kelas yang merujuk sendiri, memahami sebab asas ralat "jenis tidak lengkap" adalah penting untuk mereka bentuk struktur berorientasikan objek yang mantap dan cekap.

Atas ialah kandungan terperinci Mengapa Mentakrifkan Ahli Kelas Jenis Yang Sama Menghasilkan Ralat \'Jenis Tidak Lengkap\'?. 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