我们说我有两节课:
Class A {
B b;
Foo bar;
}
Class B {
// some stuff
}
由于类型A的对象拥有类型B的对象,因此可以通过A访问B的某些内容。如果类型B的对象必须能够访问它,那将是一个好的设计。对象(A型)?例如。如果我有一个B类型的对象,并希望得到它所属的对象的条形值。
每次创建B时添加对A到B的引用是不错的做法?还是某种委托模式?
答案 0 :(得分:1)
正常的方法是在B类中使用父指针:
class A {
A():b(this){}
B b;
Foo bar;
};
class B {
B(A *parent=0)
:p_parten(parent){}
// some stuff
void func(){
if (p_parent)
p_parent->bar.something();
}
A *p_parent;
};
答案 1 :(得分:0)
是的,只是想将A的引用或指针传递给B的构造函数。
答案 2 :(得分:0)
如果A取决于B而B同时取决于A,则称为循环依赖。它表明设计不好,但正如我所经历的那样,你有时可以避免它。
如果这是你将在一个大项目中使用的最小化版本,我建议你考虑为什么B需要A,因为A似乎是你的经理类。 并将A的共享部分移动到单独的类中,将其称为C而不是将C传递给B而不是A.
如果您有包含问题,请使用"转发声明"在B&#39的头文件中声明A.