我在 Qt 应用程序中有一些间歇性的段错误。我认为问题与我们(错误)使用 QSharedPointer
有关。 Qt Documentation states :
QSharedPointer::QSharedPointer ( T * ptr ) : Creates a QSharedPointer that points to ptr. The pointer ptr becomes managed by this QSharedPointer and must not be passed to another QSharedPointer object or deleted outside this object.
我认为我们都在做不能... :/
是否有 OOP 方法来强制 QSharedPointer
管理的指针不能被删除或传递给另一个 QSharedPointer
?
最好的解决方案是出现编译错误。
最佳答案
正常的模式是将 new
语句放在智能指针的构造函数中,如下所示:
QSharedPointer<Obj> p (new Obj(2));
这样你就永远不会有对裸指针本身的引用。
如果你重构你的代码,让所有新的运算符都在这样的行中,你所有的问题都将得到解决。
关于c++ - 如何防止删除由 QSharedPointer 管理的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155088/