web-dev-qa-db-ja.com

Qtのスマートポインタ

書かれているように ここ これまでのQtには8つの特定のスマートポインタクラスがあります。必要なのはそれだけのようです。ただし、これらのスマートポインターのいずれかを使用するには、クラスをQObjectから派生させる必要がありますが、これは必ずしも便利ではありません。 Qtには、任意のクラスで機能するスマートポインターの他の実装がありますか?

18
alexkr

多くのQtクラスはQObjectから派生しており、組み込みのスマートポインタークラスの一部はQObject(またはQSharedData)に関連していますが、 QSharedPointer および QScopedPointer テンプレートはポインターを許可しているように見えます何にでも。

それを超えて、いくつかの スマートポインタテンプレートブースト にあります:

  • scoped_ptr -単一オブジェクトの単純な唯一の所有権。コピー不可。
  • scoped_array -配列の単純な唯一の所有権。コピー不可。
  • shared_ptr -複数のポインタ間で共有されるオブジェクトの所有権。
  • shared_array -配列の所有権は複数のポインター間で共有されます。
  • weak_ptr --shared_ptrが所有するオブジェクトの非所有オブザーバー。
  • intrusive_ptr -参照カウントが埋め込まれたオブジェクトの共有所有権。
18
Paul Dixon