C++ 删除对象而不调用成员指针的析构函数

C++ 删除对象而不调用成员指针的析构函数,c++,C++,我有一个班级 我还有一门课叫Safemesh 许多安全网格存储指向同一网格的指针 当我调用Safemesh的析构函数时,我不想删除我的网格 我该怎么做 当我调用Safemesh的析构函数时,我不想删除我的网格 我该怎么做 通过不删除Safemesh析构函数中的网格指针。如果析构函数不需要或不需要执行任何其他操作,那么隐式生成的析构函数就可以了 例如: struct Mesh; struct Safemesh { Mesh* mesh; }; 当然,这会让您在其他地方销毁网格 一种解决

我有一个班级

我还有一门课叫Safemesh

许多安全网格存储指向同一网格的指针

当我调用Safemesh的析构函数时,我不想删除我的网格

我该怎么做

当我调用Safemesh的析构函数时,我不想删除我的网格

我该怎么做

通过不删除Safemesh析构函数中的网格指针。如果析构函数不需要或不需要执行任何其他操作,那么隐式生成的析构函数就可以了

例如:

struct Mesh;
struct Safemesh {
    Mesh* mesh;
};

当然,这会让您在其他地方销毁网格

一种解决方案是将网格存储在容器中,并确保在销毁任何网格或将其设置为指向其他位置之前,容器中的任何元素都不会被销毁。例如:

std::vector<Mesh> meshes(2);
Safemesh safe0 { &meshes[0] };
Safemesh safe1 { &meshes[0] };
Safemesh safe2 { &meshes[1] };
Safemesh safe3 { &meshes[1] };
struct Safemesh {
   std::shared_ptr<Mesh> mesh;
};

欢迎来到堆栈溢出。请花点时间浏览并参考中的材料,了解您可以在此处询问什么以及如何提问。发布一篇文章特别重要。使用“不写
删除网格”和网格将不会被删除…我已经有了管理解决方案。谢谢回复