两个对象内部的共享指针相互连接
Shared pointer inside 2 objects connecting each other
我正在尝试设计一个类来设计c++中的3D网格。我的想法如下:3个基本类:点,多边形,多面体(网格必须处理非常一般的形状)Polygon类包含一个指向Point(顶点)的共享指针向量,同样,Polyhedron类包含两个指向Point和Polygon的共享指针向量。这将是非常有用的内部多边形共享指针的向量多面体和内部点2向量的共享指针的多面体。这样,每个点都知道与它相连的多边形和多面体。
我已经以这种方式实现了类(使用enable_shared_from_this
),并且所有工作都很好,但现在我对此有一些疑问。这个设计是一个好的设计还是可能会导致一些问题?是一个坏的行为有2个对象连接共享指针?在这种情况下内存管理如何?
我想知道你的意见,非常感谢!
std::shared_ptr
图不能包含循环,否则就会出现内存泄漏,因为每个对象都使下一个对象保持活动状态。
用std::weak_ptr
s打破循环
在两个方向上共享指针意味着内存不会被释放。您应该在所有权方向上使用共享指针(您说的重要指针),而在其他方向上使用弱指针。
所需要做的就是在存储时将共享指针赋值给弱指针,并确保在使用弱指针之前检查过期。
相关文章:
- 如何从具有移动语义的类对象中生成共享指针
- 使用共享指针的函数调用,其对象应为 const
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 如何访问由共享指针保存的类方法?
- 从矢量或地图中删除共享指针
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 使用共享指针实现复制 c'tor?
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 共享指针继承,而不先显式强制转换
- 如何检查类中共享指针的有效性?
- 共享 C++ 的数据成员指针
- std::排序在共享指针的向量上
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 嵌套类、继承和C++中的共享指针
- <Base> <Derived> 具有相同原始指针共享引用的 shared_ptr 和 shared_ptr 实例是否计数?
- 重载流<<运算符,用于指针/共享指针和其他类型的
- RAW指针共享_ptr
- 指针共享习语
- 将memmove函数与临时指针共享相同的地址