来自原始指针的 QSharedPointer
QSharedPointer from a raw pointer
我目前有这样的东西:
QSharedPointer<t> Qsharedfoo;
现在我有一个指向 foo 的原始指针,也称为 rawfoo
.如何使 foo point 拥有原始指针并开始指向它。我知道在提升中,我们可以使用共享指针boost::make_shared
我们如何用QSharedPointer
做到这一点?
我想做这样的事情:
Qsharedfoo = rawfoo
直接从Qt文档中,我们有这样的东西:
QSharedPointer<MyObject> obj = QSharedPointer<MyObject>(new MyObject);
您基本上可以以相同的方式传递指针:
// Here I assume that T is the class you're using for Qsharedfoo.
QSharedPointer<T> Qsharedfoo = QSharedPointer<T>(rawfoo);
如何使 foo point 拥有原始指针并开始指向它。我知道在带有共享指针的 boost 中,我们可以使用 boost::make_shared 我们如何用 QSharedPointer 做到这一点?
不幸的是,你不能。
-
与make_shared不同,您将始终需要通过构造函数。
-
它不一定是异常安全的。
总之,您需要通过构造函数和运算符=,如下所示:
Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload
或者,如果您已经引用了指针,则使用 reset() 方法,如下所示:
Qsharedfoo.reset(rawFoo);
但正如开头提到的,这些操作与您正在寻找的操作不相等。
相关文章:
- 删除 QSharedPointer 指向的 QObject
- 将 QNetworkReply 指针传递给 QSharedPointer
- QSharedPointer 在 emit 中被销毁
- 如何在 exec 循环停止后正确使用 QSharedPointer 的析构函数<QObject>?
- 在 qt5 中使用 QSharedPointer 时出现 Seg 错误
- QSharedPointer 或 std::shared_ptr 的生命周期
- qsharedPointer作为方法参数或方法的返回值的良好实践
- Setting QSharedPointer
- 来自原始指针的 QSharedPointer
- QSharedPointer::create()
- QSharedPointer::isNull() 和运算符之间的区别!().
- 在 QSharedPointer 中管理 QAbstractItemModel 数据
- 没有线程安全开销的 QSharedPointer
- QSharedPointer,如何传递它们,以及我是否需要它们
- 为什么 QSharedPointer:<T>:create 不完整对象的调用析构函数?
- 如何以正确的方式从容器中删除QSharedPointer
- 为什么类QSharedPointer中没有重载运算符T*()
- 访问QSharedPointer对象时出现分段错误
- QCache and QSharedPointer
- QSharedPointer does not return false