Rumah >pembangunan bahagian belakang >C++ >Mengapa Mentakrifkan Ahli Kelas Jenis Yang Sama Menghasilkan Ralat \'Jenis Tidak Lengkap\'?
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; }
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; }
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:
class A;
Ini memberitahu pengkompil bahawa A ialah jenis kelas, membenarkan ia dirujuk sebagai ahli bukan penuding:
class B { private: A member; };
class A { private: boost::shared_ptr<A> member; };
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!