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

标签 c++ class vtk delete-operator

我有一个使用 vtk 的项目,其中很多 vtk 对象被构造为私有(private)成员。在 .h 文件中,我初始化 vtk 对象,如下所示:

vtkSmoothPolyDataFilter *m_SmoothFilter;
vtkDecimatePro *m_DecimatePro;
vtkCleanPolyData *m_CleanPolyData;

在运行时,这些对象中的一些是用 New() 命令初始化的,但有些不是。由于我不能使用智能指针(由于我的 UI 包无法使用),我必须在析构函数中删除这些对象。我必须使用一些 bool 检查系统来了解它们是否已初始化:

if(m_SmoothFilter)
   m_SmoothFilter->Delete()
if(m_DecimatePro)
   m_DecimatePro->Delete()

但是这段代码摘录没有检测对象是否被初始化。我该如何进行这项检查?

最佳答案

将所有指针初始化为零或使用 new 创建的实际对象。然后你的 C++ delete 可以在没有任何 ifs 的情况下删除(删除零指针是可以的)。我不确定上面的 Delete() 是做什么的。

关于c++ - 如何通过首先检查它们是否用 New() 初始化来删除 vtk 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431500/

相关文章:

python-2.7 - 使用VTK转换DICOM图像

c++ - 将带有 DST 的时间字符串转换为 UTC 时间戳

c++ - Qt dataChanged 信号 - 不使用提供的单元格范围

java - 我应该使用哪个类加载器?

c++ - 是否可以将派生类对象视为同类型的基类? <noobieQ/>

c++ - 自定义 vector 类型

c++ - OpenCV 2.3.1。 cv::Mat 到 std::vector 转换

c++ - 如何修复 BST 删除功能中的边缘案例?

c++ - 在 QVTKWidget 渲染器中添加和删除 vtkChartXY/vtkContextView

c++ - VTK/ITK 项目请求的模块在 ubuntu 上不可用