来自原始指针的QSharedPointer
-
22-12-2019 - |
题
我目前有这样的事情:
QSharedPointer<t> Qsharedfoo;
现在我有一个指向foo的原始指针以及调用 rawfoo
.我怎样才能让foo point拥有原始指针并开始指向它。我知道在boost中,我们可以使用共享指针 boost::make_shared
我们该怎么做呢? QSharedPointer
?
我想做这样的事情:
Qsharedfoo = rawfoo
解决方案
我怎样才能让foo point拥有原始指针并开始指向它。我知道在使用共享指针的boost中,我们可以使用boost::make_shared我们如何使用QSharedPointer来做到这一点?
不幸的是,你不能。
与make_shared不同,您将始终需要通过构造函数。
它不一定是异常安全的。
总之,你需要通过构造函数和 运算符= 如下:
Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload
或者,如果你已经有一个指针的引用,然后使用 reset()方法 如下:
Qsharedfoo.reset(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);
不隶属于 StackOverflow