如何通过首先检查它们是否使用 New() 初始化来删除 vtk 对象
How to delete vtk objects by checking first whether they are initialized with New()?
我有一个使用 vtk 的项目,其中许多 vtk 对象被构造为私有成员。在.h文件中,我初始化vtk对象,如下所示:
vtkSmoothPolyDataFilter *m_SmoothFilter;
vtkDecimatePro *m_DecimatePro;
vtkCleanPolyData *m_CleanPolyData;
在运行时,其中一些对象使用 New() 命令初始化,但其中一些对象没有。由于我无法使用智能指针(由于我的 UI 包无法正常工作),因此我必须在析构函数中删除这些对象。我必须使用一些布尔检查系统来了解它们是否已初始化:
if(m_SmoothFilter)
m_SmoothFilter->Delete()
if(m_DecimatePro)
m_DecimatePro->Delete()
但此代码摘录不会检测对象是否已初始化。如何进行此检查?
初始化所有指向零的指针或使用 new 创建的实际对象。 然后,您的C++删除可以在没有任何ifs的情况下删除(可以删除零指针)。 我不确定上面的 Delete() 是做什么的。
相关文章:
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 'auto *x = new some_struct{};"是一个未初始化的变量?
- 使用复制构造函数初始化 new[]
- 如何在堆上初始化线程?(使用 "new" 关键字)
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 使用可变模板列表初始化数组,并放置new
- 我可以从取消引用"new"的返回值初始化引用吗
- 在 new 关键字中,由默认构造函数初始化的类中的元素是否也使用 new 关键字在C++?
- 编译器是否在由 new 初始化的对象上调用隐式析构函数
- 构造函数不会将使用 new 初始化的数组作为参数
- 如何在不使用 new 的情况下进行默认初始化
- 访问和打印用 new 初始化的矢量的矢量
- 视觉效果如何使用New New初始化一个智能点
- 断言错误,即使在使用 new 初始化字符指针后也是如此
- 如何用new初始化QVector<QVector<QString>>*矩阵(作为类成员)?
- 使用 new 初始化 typedef 结构
- 如何在c++中使用get和set方法来初始化一个用new初始化的对象?
- 指针向量,其元素用new初始化:赋给新值时会发生什么
- 使用new初始化双大括号
- C++DoublyLinkedList单元测试通过智能初始化失败,但通过new初始化成功