我有一个问题,需要用不同的对象类型来创建某种层次结构。我有一个类,其中包含另一个类的成员,就像这样:
class A
{
public:
A(){}
~A(){}
void addB(B* dep){
child = dep;
dep->addOwner(this);
}
void updateChild(){
child->printOwner();
}
void print(){
printf("Printing...");
}
private:
B* child;
};
这是 B 类:
class B
{
public:
void addOwner(A* owner){
ownerObject = owner;
}
//ISNT WORKING
void printOwner(){
ownerObject->print();
}
private:
A* ownerObject;
};
在类"A"外调用类"B"的函数是完全可行的,但反过来尝试会导致编译错误,因为B中未定义A。实际上,可以使用include和前向声明来解决这个问题,但我猜测这是一个交叉引用问题,编译器无法解决。
有没有可能解决这个问题,或者我应该重新考虑我的设计?