在我的 C++ 代码中,例如在类的析构函数中,我经常有这样的块:
if (m_pointer) {
delete m_pointer;
m_pointer = nullptr;
}
我只是想知道,是否有比在我的代码中重复这个块更好的、指定的方法来做到这一点。智能指针在这里不是一个选项,因为它都是关于 QObjects 的,据我所知,QObjects 并不真正支持它们。
我对Qt不熟悉,无法确认
QObject
是否可以与智能指针一起使用。 如果可以的话——这就是正确的道路。
如果您必须手动管理原始指针,您可以使用如下宏:
#define SAFE_DELETE(p) { if (p) delete p; p=NULL; }
用法:
SAFE_DELETE(m_pointer);
注意:通常不推荐使用 marcos,但在这种特定情况下我认为这是可以接受的。