来自原始指针的QSharedPointer

时间:2014-01-10 23:29:15

标签: c++ qt boost qtcore qsharedpointer

我目前有这样的事情:

QSharedPointer<t> Qsharedfoo;

现在我有一个指向foo的原始指针,也称为rawfoo。如何让foo指向拥有原始指针并开始指向它。我知道在使用共享指针的boost中我们可以使用boost::make_shared 我们如何使用QSharedPointer

我想做这样的事情:

Qsharedfoo = rawfoo

2 个答案:

答案 0 :(得分:6)

直接Qt documentation,我们有这样的事情:

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);

答案 1 :(得分:3)

  

如何让foo指向拥有原始指针并开始指向它。我知道在使用共享指针的boost中我们可以使用boost :: make_shared我们如何使用QSharedPointer进行操作?

不幸的是,你不能。

  • 与make_shared不同,你总是需要通过构造函数。

  • 不一定是例外安全。

总之,您需要完成构造函数和operator=,如下所示:

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

或者如果您已经有一个指针的引用,那么使用reset() method,如下所示:

Qsharedfoo.reset(rawFoo);

但正如开头所提到的,这些与你正在寻找的行动并不相同。