ここに書かれているように、これまでのQtには8つの特定のスマートポインタクラスがあります。必要なのはそれだけのようです。ただし、これらのスマートポインターのいずれかを使用するには、クラスをQObjectから派生させる必要がありますが、これは必ずしも便利ではありません。Qtには、任意のクラスで機能するスマートポインターの他の実装がありますか?
28113 次
1 に答える
18
多くのQtクラスはQObjectから派生しており、組み込みのスマートポインタークラスの一部はQObject(またはQSharedData)に関連していますが、QSharedPointerおよびQScopedPointerテンプレートはあらゆるものへのポインターを許可しているように見えます。
それ以外にも、Boostにはいくつかのスマートポインターテンプレートがあります。
- scoped_ptr-単一オブジェクトの単純な唯一の所有権。コピー不可。
- scoped_array-配列の単純な唯一の所有権。コピー不可。
- shared_ptr-複数のポインター間で共有されるオブジェクトの所有権。
- shared_array-複数のポインター間で共有される配列の所有権。
- weak_ptr -shared_ptrが所有するオブジェクトの非所有オブザーバー。
- intrusive_ptr-参照カウントが埋め込まれたオブジェクトの共有所有権。
于 2009-09-26T16:51:23.347 に答える