两个相互连接的对象内的共享指针 我试图设计一个类来设计C++中的三维网格。 我的想法如下: 3个基本类:点、多边形、多面体(网格必须处理非常一般的形状) “多边形”类包含指向点(顶点)的共享指针向量,同样,“多面体”包含指向点和多边形的共享指针向量。 在多边形内部有一个指向多面体的共享指针向量和多面体共享指针的第2点向量将非常有用。 这样,每个点都会知道与其相连的多边形和多面体

两个相互连接的对象内的共享指针 我试图设计一个类来设计C++中的三维网格。 我的想法如下: 3个基本类:点、多边形、多面体(网格必须处理非常一般的形状) “多边形”类包含指向点(顶点)的共享指针向量,同样,“多面体”包含指向点和多边形的共享指针向量。 在多边形内部有一个指向多面体的共享指针向量和多面体共享指针的第2点向量将非常有用。 这样,每个点都会知道与其相连的多边形和多面体,c++,c++11,shared-ptr,weak-ptr,C++,C++11,Shared Ptr,Weak Ptr,我已经用这种方式实现了这些类(使用enable\u shared\u from\u this),所有这些都很好,但现在我对此有些怀疑。 这个设计是一个好的设计还是会导致一些问题?让两个对象通过共享指针连接是一种不良行为吗?在这种情况下,内存管理是如何进行的 共享指针在连接多边形->点、多面体->点和多面体->多边形中非常重要,但在另一个方向上不需要。我认为我可以使用弱指针而不是共享指针,这样点就不会对多边形和多面体的生命负责。我不喜欢使用标准指针 我想知道你的意见,非常感谢 std::share

我已经用这种方式实现了这些类(使用
enable\u shared\u from\u this
),所有这些都很好,但现在我对此有些怀疑。 这个设计是一个好的设计还是会导致一些问题?让两个对象通过共享指针连接是一种不良行为吗?在这种情况下,内存管理是如何进行的

共享指针在连接多边形->点、多面体->点和多面体->多边形中非常重要,但在另一个方向上不需要。我认为我可以使用弱指针而不是共享指针,这样点就不会对多边形和多面体的生命负责。我不喜欢使用标准指针


我想知道你的意见,非常感谢

std::shared_ptr图形不能包含循环,否则会出现内存泄漏,因为每个对象都使下一个对象保持活动状态


使用
std::weak_ptr
s打破循环。

在两个方向上共享指针意味着您的内存不会被释放。 您应该在所有权方向上使用共享指针(您认为重要的指针),而在另一个方向上使用弱指针


只需在存储时将共享指针分配给弱指针,并确保在使用弱指针之前检查有效期。

非常感谢!我会照建议去做!非常感谢你!这正是我需要知道的!