我有一种情况,一个QSharedPointer
托管对象表示它已经完成了它的目的并准备好很快删除(在执行后离开函数发出我的readyForDeletion
信号)。使用普通指针时,我只调用对象,但是使用-managed 实例QObject::deleteLater
是不可能的。QSharedPointer
我的解决方法如下:
template<typename T>
class QSharedPointerContainer : public QObject
{
QSharedPointer<T> m_pSharedObj;
public:
QSharedPointerContainer(QSharedPointer<T> pSharedObj)
: m_pSharedObj(pSharedObj)
{} // ==> ctor
}; // ==> QSharedPointerContainer
template<typename T>
void deleteSharedPointerLater(QSharedPointer<T> pSharedObj)
{
(new QSharedPointerContainer<T>(pSharedObj))->deleteLater();
} // ==> deleteSharedPointerLater
这很好用,但是使用这种方法有很多开销(分配一个新的QObject
等等)。有没有更好的解决方案来处理这种情况?