原始方式:
B.h
class B { };
C.h
#include "B.h" class C { public: C(B* obj) { this->m_obj= obj; } private: B* m_obj; };
分析:C强依赖于B,有耦合性,可以想办法分离B和C的依赖关系。
解决方案:利用C++的多态特性,在B类和C类之间只存放各自的子类对象的父类指针,解耦类B和类C的联系,避免相互依赖。实现方式如下:
A.h
class A { };
B.h
#include "A.h" class B: public A { };
C.h
#include "A.h" class C { public: C(A* obj) { this->m_obj= obj; } private: A* m_obj; };
main.cpp
int main() { A* a = new B(); C c(a); }