我目前有这样的事情:
QSharedPointer<t> Qsharedfoo;
现在我有一个指向 foo 的原始指针,也称为rawfoo
. 我怎样才能让 foo 点拥有原始指针并开始指向它。我知道通过共享指针提升我们可以使用boost::make_shared
我们如何做到这一点QSharedPointer
?
我想做这样的事情:
Qsharedfoo = rawfoo
我目前有这样的事情:
QSharedPointer<t> Qsharedfoo;
现在我有一个指向 foo 的原始指针,也称为rawfoo
. 我怎样才能让 foo 点拥有原始指针并开始指向它。我知道通过共享指针提升我们可以使用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 点拥有原始指针并开始指向它。我知道在使用共享指针的 boost 中我们可以使用 boost::make_shared 我们如何使用 QSharedPointer 呢?
不幸的是,你不能。
与 make_shared 不同,您将始终需要通过构造函数。
它不一定是异常安全的。
总之,您需要通过构造函数和operator=如下:
Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload
或者如果您已经引用了指针,则使用reset() 方法,如下所示:
Qsharedfoo.reset(rawFoo);
但正如开头所述,这些操作与您要查找的操作不同。