4

現在、次のようなものがあります。

QSharedPointer<t> Qsharedfoo;

これで、 foo への生のポインターとrawfoo. どうすればfooポイントが生のポインタを所有し、それを指し始めることができますか. boost::make_shared 共有ポインターを使用したブーストで、どのように使用できるか知っていQSharedPointerますか?

私はこのようなことをしたい:

Qsharedfoo = rawfoo
4

2 に答える 2

3

どうすればfooポイントが生のポインタを所有し、それを指し始めることができますか. 共有ポインターを使用したブーストでは、boost::make_shared を使用できることを知っています QSharedPointer でどのように行うのですか?

残念ながらできません。

  • make_shared とは異なり、常にコンストラクターを経由する必要があります。

  • 必ずしも例外に対して安全であるとは限りません。

要約すると、次のようにコンストラクターとoperator=を使用する必要があります。

Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload

または、ポインターへの参照が既にある場合は、次のようにreset() メソッドを使用します。

Qsharedfoo.reset(rawFoo);

しかし、最初に述べたように、これらはあなたが探しているものと同等の操作ではありません。

于 2014-01-11T00:39:34.433 に答える