c++ - 如何防止删除由 QSharedPointer 管理的指针

标签 c++ qt pointers shared-ptr qsharedpointer

我在 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/

相关文章:

c++ - 使用视觉检漏仪

c++ - GUI 中是否显示拼写检查代码?

c++ - 深入理解strcat和strlen函数

C++ 仿函数和默认参数

c++ - 为什么互斥锁被解锁

c++ - 从动态数组中删除滞后零

c++ - 结构指针的运算符重载

c++ - 如何在类中初始化二维数组?

c++ - 任何类型的缓存机制

c++ - STL vector 和 c++ : how to . 在没有默认构造函数的情况下调整大小?