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);
}



