我目前有这样的事情:

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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top