私はweak_ptrのソートされたベクトルを検索するためにlower_bound()を使用しています
vector<weak_ptr<A> >::iterator findA( const string & id ) const
{
sa = make_shared<A>( id );
a = sa;
return lower_bound( owners.begin(), owners.end(), sa,
[] ( const weak_ptr<A> & l, const weak_ptr<A> & r )
{
return (l.lock()->getID() < r.lock()->getID());
} );
}
はどこsa
にありshared_ptr<A>
、クラスA
にはプライベートstring ID
メソッドとパブリック メソッドがありgetID
ます。findA
呼び出すと、セグメンテーション違反が発生しgetID
ます。が原因だと思いますがlock()
、これは empty を再実行しますshared_ptr
。
どうすれば修正できますか?