我有一个类似于下面的代码,但我不知道如何使它工作。
我已经搜索过它,看起来与循环依赖有关,但现在,我已经尝试了一些示例,但仅适用于 2 的依赖项。
相反,这个,我有许多类都依赖于它们的“Ctrl”类(CtrlA 和 CtrlB 相互依赖,Ax 类都需要 Ctrl),但其中一些类也需要 Ctrl 文件(CtrlA 需要 Ax类)。另外,我有一个继承类(A2 继承 A3)。
CtrlA.h
#ifndef CTRLA
#define CTRLA
#include "CtrlB.h"
#include "A1.h"
class CtrlB;
class A1;
class CtrlA{
protected:
A1 x;
public:
void op1(CtrlB b){
a.op1(this, b);
}
void op2(){}
};
#endif
CtrlB.h
#ifndef CTRLB
#define CTRLB
#include "CtrlA.h"
class CtrlA;
class CtrlB{
protected:
public:
void op1(){}
void op2(CtrlA a){
a.op1(this);
}
};
#endif
A1.h
#ifndef A1
#define A1
#include "CtrlA.h"
#include "CtrlB.h"
#include "A2.h"
class CtrlA;
class CtrlB;
class A1{
protected:
A2 x1;
public:
void op1(CtrlA a, CtrlB b){
x1.op1(this, b);
}
};
#endif
A2.h
#ifndef A2
#define A2
#include "CtrlA.h"
#include "CtrlB.h"
#include "A3.h"
class CtrlA;
class CtrlB;
class A2:public A3{
protected:
public:
void op1(CtrlA a, CtrlB b){
a.op2();
b.op1();
}
};
#endif
A3.h
#ifndef A3
#define A3
#include "CtrlA.h"
#include "CtrlB.h"
class CtrlA;
class CtrlB;
class A3{
protected:
public:
virtual void op1(CtrlA a, CtrlB b) = 0;
};
#endif
主文件
#include "CtrlA.h"
#include "CtrlB.h"
int main(){
int i;
}
如果有人可以帮助我更正代码以使其正常工作,我将不胜感激。