Forward Mengisytiharkan Kelas Bersarang
Dalam C, mengisytiharkan hadapan kelas bersarang di luar bekasnya tidak boleh dilakukan. Pengkompil memerlukan definisi penuh kelas bersarang dalam skop yang mengandunginya.
Andaikan anda mempunyai kelas dengan kelas bersarang:
class Container { public: class Iterator { // ... }; // ... };
Percubaan untuk memajukan mengisytiharkan Container::Iterator dalam yang lain fail pengepala akan mengakibatkan ralat penyusunan:
class Container::Iterator; class Foo { void Read(Container::Iterator& it); };
Sebab untuk Sekatan
Pengkompil perlu mengetahui struktur lengkap kelas, termasuk kelas bersarang, sebelum ia boleh menjana kod. Ke hadapan mengisytiharkan kelas bersarang di luar bekasnya memecahkan kebergantungan ini.
Pilihan Penyelesaian
Untuk memintas sekatan ini, anda mempunyai beberapa pilihan:
Dengan mengikuti garis panduan ini, anda boleh memastikan kod anda berjaya disusun apabila mengisytiharkan kelas bersarang ke hadapan.
Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Majukan Mengisytiharkan Kelas C Bersarang di Luar Bekasnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!