如何通过首先检查它们是否使用 New() 初始化来删除 vtk 对象

How to delete vtk objects by checking first whether they are initialized with New()?

本文关键字:New 初始化 对象 vtk 删除 何通过 检查 是否      更新时间:2023-10-16

我有一个使用 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() 是做什么的。