0

boost::shared_ptrの2つの異なるオブジェクトを指す2つの'があるとしclass Aます。

boost::shared_ptr<A> x = boost::make_shared<A>();
boost::shared_ptr<A> y = boost::make_shared<A>();

ある時点で、x所有しているオブジェクトの所有権を破棄し、オブジェクトの所有権をと共有する必要がありyますy。これはどのように達成できますか(両方のshared_ptrがその時点で構築されるため、コピーコンストラクターを使用する機会がないことに注意してください)。

ありがとう!

4

1 に答える 1

4

簡単に割り当てることができます。

x = y;

std::shared_ptrおよびboost::shared_ptr代入の代入演算子を参照してください。これは、割り当ての前後の参照カウントを確認することで確認できます。この例ではC++11を使用していますが、同じ結果std::shared_ptrboost::shared_ptr得られます。

#include <memory>
int main()
{
    std::shared_ptr<int> x(new int);
    std::cout << x.use_count() << "\n"; // 1
    std::shared_ptr<int> y(new int);
    std::cout << x.use_count() << "\n"; // still 1
    y = x;
    std::cout << x.use_count() << "\n"; // 2
}
于 2012-08-26T18:48:25.027 に答える