C++ 删除对象而不调用成员指针的析构函数
我有一个班级 我还有一门课叫Safemesh 许多安全网格存储指向同一网格的指针 当我调用Safemesh的析构函数时,我不想删除我的网格 我该怎么做 当我调用Safemesh的析构函数时,我不想删除我的网格 我该怎么做 通过不删除Safemesh析构函数中的网格指针。如果析构函数不需要或不需要执行任何其他操作,那么隐式生成的析构函数就可以了 例如:C++ 删除对象而不调用成员指针的析构函数,c++,C++,我有一个班级 我还有一门课叫Safemesh 许多安全网格存储指向同一网格的指针 当我调用Safemesh的析构函数时,我不想删除我的网格 我该怎么做 当我调用Safemesh的析构函数时,我不想删除我的网格 我该怎么做 通过不删除Safemesh析构函数中的网格指针。如果析构函数不需要或不需要执行任何其他操作,那么隐式生成的析构函数就可以了 例如: struct Mesh; struct Safemesh { Mesh* mesh; }; 当然,这会让您在其他地方销毁网格 一种解决
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;
};
欢迎来到堆栈溢出。请花点时间浏览并参考中的材料,了解您可以在此处询问什么以及如何提问。发布一篇文章特别重要。使用“不写
删除网格”代码>和网格将不会被删除…我已经有了管理解决方案。谢谢回复