数日間共有ポインタを理解しようとしていて、理解できないようです。当たり前のことなのか、複雑すぎるのかわからない。まず、共有ポインタを実際に使用する例を教えてください。ウィキペディアの例は私には意味がありません。また、共有ポインターを別の関数に渡す方法や、共有ポインターを使用してオブジェクトを作成する方法を教えてください。それで、どのようにそれを回し、どこでそれを使用しますか?どんな情報や例でも素晴らしいでしょう。
また、何を使用すればよいかわからないという問題があります。この関数を使用して、を割り当て、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」が例外をスローした場合に作成中にポインタを処理する方法が必要です。