假设我有一个像下面这样的类:
#include <Object>
#include <QProcess>
class MyClass: public QObject {
private:
QPointer<QProcess> m_process{ nullptr };
public:
MyClass(QObject *parent = nullptr)
: QObject{ parent }
, m_process{new QProcess{} }
{
QObject::connect(m_process, &QProcess::errorOccurred,
this, [](QProcess::ProcessError error) {
qDebug() << "error: " << error;
});
}
~MyClass()
{
if (m_process) delete m_process; //--> is it necessary?
}
};
我是否需要m_process
手动删除,如析构函数中所示?
不幸的是,我不能使用std::unique_ptr
or std::shared_ptr
,
QObject::connect(m_process, &QProcess::errorOccurred,
this, [](QProcess::ProcessError error) {
qDebug() << "error: " << error;
});
我还没有看到QObject::connect
.
另一方面,在QPointer::~QPointer()我读过:
销毁受保护的指针。就像普通指针一样,销毁受保护的指针不会破坏指向的对象。
这意味着QPointer::~QPointer()
将 delete asMyClass
的对象超出范围,因此我要删除m_process
两次?
还是我误会了?