18

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

4

1 に答える 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 に答える