У меня есть код, подобный следующему, но я не могу понять, как заставить его работать.
Я искал его и, похоже, что-то про циклическую зависимость, но сейчас яя пробовал с некоторыми примерами, но работаю только с зависимостью 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
main.cpp
#include "CtrlA.h"
#include "CtrlB.h"
int main(){
int i;
}
Буду очень признателен, если кто-то сможет помочьмне исправить код, чтобы он мог работать.