我目前有这样的事情:
QSharedPointer<t> Qsharedfoo;
现在我有一个指向foo的原始指针,也称为rawfoo
。如何让foo指向拥有原始指针并开始指向它。我知道在使用共享指针的boost中我们可以使用boost::make_shared
我们如何使用QSharedPointer
?
我想做这样的事情:
Qsharedfoo = rawfoo
答案 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);
但正如开头所提到的,这些与你正在寻找的行动并不相同。