设计以访问对象所有者的元素

Design to access elements of object owner

本文关键字:所有者 元素 对象 访问      更新时间:2023-10-16

假设我有两个类:

Class A {
  B b;
  Foo bar;
}
Class B {
// some stuff
}

由于类型A的对象拥有B类型B的对象,因此A可以通过A访问B的某些内容,如果B类型B的对象必须访问其拥有的对象(类型的对象)A)?例如。如果我有一个类型的对象,并且想获得对象的栏值,则它是。

的成员。

每次创建b时添加对b的引用是一个好练习?

正常方法是在您的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;
};

是的,只想将参考或指针传递给B构造函数。

如果a依赖B和B同时依赖A,则称为循环依赖性。它表明设计不良,但是由于我经验丰富,您有时无法避免。

如果这是您将在一个大型项目中使用的东西的最小化版本,我会建议您思考为什么B需要A,因为A似乎是您的经理课程。然后将共享部分的部分移动到单独的类,让它称其为C,而不是通过C将其称为b。

如果您有包容性问题,请使用"正向声明"来声明B的标题文件。