几天来一直试图理解共享指针,感觉好像我无法理解它。不知道是不是太明显了还是太复杂了。首先,谁能给我一个实际使用共享指针的例子。维基百科上的例子对我来说毫无意义。以及如何将共享指针传递给另一个函数或使用共享指针创建对象。那么,你如何传递它以及你会在哪里使用它?任何信息或示例都会很棒。
另外,我有这个问题,我不知道该使用什么。我有这个函数,我在其中分配 aQFile
并将其传递给另一个类中的函数。该函数将文件作为 a QIODevice*
,然后创建一个包含该文件的对象。我想知道这里最好的解决方案是什么,以及如何(如果我应该)在这里使用共享指针?如何创建共享指针<QFile>
并将其传递到函数需要的位置<QIODevice>
。感觉我根本没有得到共享指针......
我的另一种方法是将分配QFile
的QScopedPointer
. 然后我将它传递给类,在创建将存储文件的对象时,我使用QPointer
or QScopedPointer
。在第一个调用函数结束时,我应该调用 take() 对吗?
function () {
QScopedPointer<QFile> item(new QFile("filename"));
SomeClassObject->doStuff(item.data());
item.take();
}
---------------------------------
SomeClass::doStuff(QIODevice *item) {
_currentObject = new MyObject(item); // should _currentObject be a smartpointer?
...
}
---------------------------------
class MyObject {
QPointer<QIODevice> _item;
...
MyObject(QIODevice *item) { _item = item; }
}
因此,如果“new”抛出异常,我想要一种存储指针的方法和一种在创建过程中处理它们的方法。