4

我目前有这样的事情:

QSharedPointer<t> Qsharedfoo;

现在我有一个指向 foo 的原始指针,也称为rawfoo. 我怎样才能让 foo 点拥有原始指针并开始指向它。我知道通过共享指针提升我们可以使用boost::make_shared 我们如何做到这一点QSharedPointer

我想做这样的事情:

Qsharedfoo = rawfoo
4

2 回答 2

6

直接来自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);
于 2014-01-11T00:08:35.220 回答
3

我怎样才能让 foo 点拥有原始指针并开始指向它。我知道在使用共享指针的 boost 中我们可以使用 boost::make_shared 我们如何使用 QSharedPointer 呢?

不幸的是,你不能。

  • 与 make_shared 不同,您将始终需要通过构造函数。

  • 它不一定是异常安全的。

总之,您需要通过构造函数和operator=如下:

Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload

或者如果您已经引用了指针,则使用reset() 方法,如下所示:

Qsharedfoo.reset(rawFoo);

但正如开头所述,这些操作与您要查找的操作不同。

于 2014-01-11T00:39:34.433 回答