我在使用循环依赖时遇到了一些麻烦。想象一下以下示例类:
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
};