如何处理循环依赖

时间:2015-05-15 14:22:01

标签: c++ dependencies dependency-management circular-dependency

我在使用循环依赖时遇到了一些麻烦。想象一下以下示例类:

A类,实例变量类型为C和D,方法使用内部的这两种类型加上另一种类型D:

#include "B.h"
#include "C.h"
#include "D.h"

class A {

private:
    B b;
    C c;

    void foo(D d);
};

依赖于C的B类:

#include "C.h"

class C;

class B {

private:
    C c;

    //some methods
};

使用D类方法的C类:

#include "D.h"

class D;

class C {

private:
    double x;

    void bar(D d);
};

D类,其方法使用B和C类型的变量:

#include "B.h"
#include "C.h"

class B;
class C;

class D {

private:
    int i;

    void foo2(B b);
    void bar2(C c);
};

我得到的错误是:

B.h:8:2 error: ‘C’ does not name a type

如何通过循环依赖来解决这个问题?

由于

编辑: 更新了B类:

#include "C.h"

class C;

class B {

private:
    C* c;

    B (B b) {*c = *(b.c);} //copy constructor
    //some methods
};

0 个答案:

没有答案