我有一个使用 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/