设计以访问对象所有者的元素
Design to access elements of object owner
假设我有两个类:
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的标题文件。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 从控制台中删除最后打印的元素
- 设计以访问对象所有者的元素