C++ 来自原始指针的QSharedPointer
我现在有这样的东西:C++ 来自原始指针的QSharedPointer,c++,qt,boost,qtcore,qsharedpointer,C++,Qt,Boost,Qtcore,Qsharedpointer,我现在有这样的东西: QSharedPointer<t> Qsharedfoo; Qsharedfoo = rawfoo QSharedPointer<MyObject> obj = QSharedPointer<MyObject>(new MyObject); 直接从这个角度来看,我们有这样的东西: QSharedPointer<t> Qsharedfoo; Qsharedfoo = rawfoo QSharedPointer<M
QSharedPointer<t> Qsharedfoo;
Qsharedfoo = rawfoo
QSharedPointer<MyObject> obj = QSharedPointer<MyObject>(new MyObject);
直接从这个角度来看,我们有这样的东西:
QSharedPointer<t> Qsharedfoo;
Qsharedfoo = rawfoo
QSharedPointer<MyObject> obj = QSharedPointer<MyObject>(new MyObject);
QSharedPointer obj=QSharedPointer(新的MyObject);
您基本上可以以相同的方式传递指针:
// Here I assume that T is the class you're using for Qsharedfoo.
QSharedPointer<T> Qsharedfoo = QSharedPointer<T>(rawfoo);
//这里我假设T是用于Qsharedfoo的类。
QSharedPointer Qsharedfoo=QSharedPointer(rawfoo);
如何使foo point拥有原始指针并开始指向它。我知道在使用共享指针的boost中,我们可以使用boost::make_shared我们如何使用QSharedPointer
不幸的是,你不能
- 您将始终需要遍历构造函数,而不是使_共享
- 它不一定是例外安全的
Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload
Qsharedfoo.reset(rawFoo);
但正如在开始时提到的,这些操作与您正在寻找的操作并不相同。与旧的std::auto_ptr非常相似,我也更喜欢使用reset()来避免您提到的轻微开销。但我似乎误解了米斯蒂德真正想要回答的问题。