C++中有没有指定的方法删除指针并将其设置为nullptr?

问题描述 投票:0回答:1

在我的 C++ 代码中,例如在类的析构函数中,我经常有这样的块:

if (m_pointer) {
   delete m_pointer;
   m_pointer = nullptr;
}

我只是想知道,是否有比在我的代码中重复这个块更好的、指定的方法来做到这一点。智能指针在这里不是一个选项,因为它都是关于 QObjects 的,据我所知,QObjects 并不真正支持它们。

c++ pointers
1个回答
0
投票

我对Qt不熟悉,无法确认

QObject
是否可以与智能指针一起使用。 如果可以的话——这就是正确的道路。

如果您必须手动管理原始指针,您可以使用如下宏:

#define SAFE_DELETE(p)  { if (p) delete p; p=NULL; }

用法:

SAFE_DELETE(m_pointer);

注意:通常不推荐使用 marcos,但在这种特定情况下我认为这是可以接受的。

© www.soinside.com 2019 - 2024. All rights reserved.