Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah anda boleh membuat kelas saling bergantung dalam C tanpa rekursi tak terhingga?
Kelas Saling Bergantung dalam C : Menggunakan Pengisytiharan Hadapan
Percubaan untuk mencipta dua kelas yang mengandungi objek jenis satu sama lain secara langsung membawa kepada masalah rekursi tak terhingga. Untuk mencapai matlamat ini, penyelesaian menggunakan penunjuk dan pengisytiharan hadapan adalah perlu.
Dalam senario yang disediakan, pergantungan bulat antara kelas foo dan bar menyebabkan ralat. Untuk menyelesaikan masalah ini, pengisytiharan hadapan digunakan untuk mengumumkan kewujudan setiap kelas tanpa mentakrifkannya:
// bar.h #ifndef BAR_H #define BAR_H // Declares the existence of foo without defining it class foo; class bar { public: foo* getFoo(); protected: foo* f; }; #endif
// foo.h #ifndef FOO_H #define FOO_H // Declares the existence of bar without defining it class bar; class foo { public: bar* getBar(); protected: bar* f; }; #endif
Pengisytiharan hadapan ini membenarkan pengepala foo dan bar menjadi bebas, mengelakkan rujukan bulat. Takrifan penuh setiap kelas, termasuk ahli penunjuk, kemudiannya disediakan dalam fail .cpp masing-masing.
Contoh Penggunaan:
#include "foo.h" #include "bar.h" int main(int argc, char **argv) { foo myFoo; bar myBar; }
Kini, program dikompilasi dengan jayanya kerana pengisytiharan hadapan membolehkan kelas mengetahui satu sama lain secara tidak langsung. Mereka kini boleh menyimpan penunjuk antara satu sama lain, memutuskan kitaran dan membenarkan penciptaan kelas yang saling bergantung.
Atas ialah kandungan terperinci Bagaimanakah anda boleh membuat kelas saling bergantung dalam C tanpa rekursi tak terhingga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!