【发布时间】:2015-10-22 19:03:58
【问题描述】:
几天来一直在尝试理解共享指针,感觉好像我无法理解它。不知道是不是太明显了还是太复杂了。首先,谁能给我一个实际使用共享指针的例子。维基百科上的例子对我来说毫无意义。以及如何将共享指针传递给另一个函数或使用共享指针创建对象。那么,你如何传递它以及你会在哪里使用它?任何信息或示例都会很棒。
另外,我有这个问题,我不知道该使用什么。我有这个函数,我分配一个QFile 并将它传递给另一个类中的函数。该函数将文件作为QIODevice*,然后创建一个包含该文件的对象。我想知道这里最好的解决方案是什么,以及如何(如果我应该)在这里使用共享指针?如何使用<QFile> 创建一个共享指针并将其传递到函数采用<QIODevice> 的位置。感觉我根本没有得到共享指针......
我的另一种方法是将QFile 的分配放在QScopedPointer 中。然后我将它传递给类,在创建将存储文件的对象时,我使用QPointer 或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”抛出异常,我想要一种存储指针的方法和一种在创建过程中处理它们的方法。
【问题讨论】:
标签: c++ qt pointers shared-ptr qsharedpointer