現在、大きなプロジェクトに取り組んでおり、weak_ptr
代わりにを使用する必要がありshared_ptr
ます。
これが私の問題です。
属性を持つ House という名前のクラスがあります: vector<boost::shared_ptr<People>> my_people
。このデータ メンバーを に変更しますvector<boost::weak_ptr<People>> my_people
。
私のゲッターは
vector<boost::shared_ptr<People>>& getPeople() const
{
return my_people;
}
通常、単純なweak_ptr
I で戻ることができますmy_people.lock();
しかし、私はベクトルを持っていますが、次のようなことをする方法がわかりません:
vector<boost::shared_ptr<People>>& getPeople() const
{
for( vector<boost::weak_ptr<People>::iterator it = my_people.begin();
it != my_people.end();
++it)
{
(*it).lock();
}
return my_people;
}
weak_ptr
言い換えれば、 のベクトルを のベクトルとして返したいのshared_ptr
です。出来ますか?または、ベクトルを返して、weak_ptr
使用するすべてのlock()
場所で使用する必要がありますか?