Rumah >pembangunan bahagian belakang >C++ >Bolehkah Kelas Bersarang dalam C Diisytiharkan Ke Hadapan untuk Penggunaan Di Luar Kelas Terlampirnya?
Pengisytiharan Ke Hadapan Kelas Bersarang: Tugas Yang Mustahil
Dalam C , kelas dalaman boleh menjadi cara yang mudah untuk mengatur kod. Walau bagaimanapun, apabila cuba menghantar objek kelas dalam dengan rujukan di luar definisi kelas yang disertakan, ralat penyusunan boleh timbul. Ini kerana pengkompil memerlukan kelas dalaman ditakrifkan atau diisytiharkan sepenuhnya sebelum digunakan dalam fungsi panggilan.
Pertimbangkan kod berikut:
class Container { public: class Iterator { ... }; ... };
Jika anda ingin lulus Iterator objek dengan rujukan dalam fungsi di luar skop kelas Container, anda secara intuitif boleh cuba untuk memajukan mengisytiharkan Iterator kelas:
class Container::Iterator; class Foo { void Read(Container::Iterator& it); };
Walau bagaimanapun, pendekatan ini gagal dengan ralat penyusunan disebabkan oleh Iterator jenis yang tidak diketahui.
Had Pengisytiharan Hadapan
Dalam C , pengisytiharan hadapan hanya boleh digunakan untuk mengisytiharkan kelas itu sendiri, bukan ahli bersarangnya. Sekatan ini menghalang pengisytiharan hadapan kelas dalaman.
Penyelesaian
Untuk menyelesaikan isu ini, pertimbangkan strategi alternatif:
Atas ialah kandungan terperinci Bolehkah Kelas Bersarang dalam C Diisytiharkan Ke Hadapan untuk Penggunaan Di Luar Kelas Terlampirnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!