Open WAG13 opened 4 years ago
можна в одному із класів(А) об'явити інший клас(B) , а методи які використовують B записати не в класі А, а в класі B.(Forward declaration) //A.h class B; class A{ void method_with_B(B b); } //A.cpp
//B.h class B{ void do_something(); void method_with_A(); } //B.cpp
void B::method_with_A(){} void B::do_something(){} void A::method_with_B(B b){ b.do_something(); }
Найкращий варіант - намагатись уникнути циклічних залежностей. Але якщо так не вийде - можна спробувати просто зробити так, щоб члени класів не використовувались до їх опису, використовувати forward declaration.
Попередньо оголосити один з класів від яких існу залежність, винести їх методи в окремий файл(forward declaration)
Краще за все, уникати таких ситуацій, змінивши структуру классів. Або використовувати forward declaration
Можна використовувати forward declaration
Щоб позбавитись циклічної залежності між класами, можно виділити для них спільний батьківський клас, а їх відповідно зробити наслідниками цього класу.