Mencipta Kelas Saling Bergantung dalam C Melalui Pengisytiharan Hadapan
Dalam C , bagaimana seseorang boleh mewujudkan hubungan antara dua kelas di mana setiap satu mengandungi objek jenis kelas yang lain?
Objek Langsung Membenamkan
Malangnya, membenamkan objek setiap kelas secara langsung dalam kelas yang lain tidak boleh dilaksanakan. Rujukan bulat ini mewujudkan keperluan ruang yang tidak terhingga.
Penyelesaian: Perhubungan Berasaskan Penunjuk
Sebaliknya, kita boleh menggunakan penunjuk untuk mewujudkan perhubungan ini. Untuk memecahkan pergantungan pekeliling, kami menggunakan pengisytiharan hadapan.
Pengisytiharan Hadapan
Dalam pengepala kelas (cth., bar.h dan foo.h), kami mengisytiharkan kewujudan kelas lain tanpa mentakrifkannya:
// bar.h class foo; // Declare that the class foo exists class bar { public: foo* getFoo(); protected: foo* f; };
// foo.h class bar; // Declare that the class bar exists class foo { public: bar* getBar(); protected: bar* f; };
Kini, setiap pengepala tahu tentang kelas lain tanpa definisi penuhnya.
Pelaksanaan Kelas
Dalam fail .cpp yang sepadan, kami memasukkan pengepala lain untuk mendapatkan akses kepada definisi penuhnya:
// foo.cpp #include "bar.h" // ... Implementations of foo methods
// bar.cpp #include "foo.h" // ... Implementations of bar methods
Penggunaan dalam main()
Akhir sekali, dalam main.cpp, kita boleh mencipta contoh kelas:
#include "foo.h" #include "bar.h" int main() { foo myFoo; bar myBar; }
Strategi ini membolehkan kita mencipta kelas yang menggunakan satu sama lain tanpa memerlukan isu rujukan pekeliling.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Kelas Saling Bergantung dalam C Menggunakan Pengisytiharan Hadapan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!