Dua Kelas Saling Merujuk Satu Sama Lain
Mewujudkan dua kelas C yang masing-masing mengandungi objek jenis lain secara langsung tidak mungkin kerana isu rujukan pekeliling. Walau bagaimanapun, penyelesaian melibatkan penggunaan penunjuk untuk merujuk antara satu sama lain.
Pengisytiharan Hadapan dan Penggunaan Penunjuk
Untuk mencapai ini, gunakan pengisytiharan hadapan dalam fail pengepala untuk mewujudkan kewujudan kelas lain tanpa mentakrifkannya:
// bar.h class foo; // Say foo exists without defining it. class bar { public: foo* getFoo(); protected: foo* f; };
// foo.h class bar; // Say bar exists without defining it. class foo { public: bar* getBar(); protected: bar* f; };
Kemudian, dalam fail .cpp masing-masing, masukkan pengepala lain untuk mentakrifkan kelas sepenuhnya:
// bar.cpp #include "foo.h" foo* bar::getFoo() { return f; }
// foo.cpp #include "bar.h" bar* foo::getBar() { return f; }
Pendekatan ini memecahkan gelung rujukan bulat kerana pengisytiharan hadapan membenarkan kelas untuk mengakui kewujudan satu sama lain tanpa menyertakan pengepala mereka, menghalang isu ruang yang tidak terhingga untuk objek.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Dua Kelas C yang Saling Merujuk Satu Sama Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!