如何跟踪计划稍后删除的对象?

时间:2017-02-22 23:38:54

标签: c++ qt

通常建议在Qt中使用deleteLater()代替普通delete。但是,它会导致悬挂对象的问题:它们被标记为删除但仍出现在Qt API返回的子列表中。 (由于这种行为严重违反直觉,我快速发展的Qt怪癖让我验证了它。他们这样做。)那么,有没有一种惯用的方法来跟踪这些对象?当然,我可以使用像

这样的临时解决方案
class DeleteLaterable
{
public:
     void markForDeletion() { mMarked = true; }
     bool isMarked() const { return mMarked; }
private:
     bool mMarked = false;
};

并公开继承它的一切,但它打开了一整套不同的虚拟继承蠕虫。有更好的想法吗?

0 个答案:

没有答案