私はこのコードを持っています:
cerr << client->inventory.getMisc().front()->getName() << endl;
vector<itemPtr>::iterator it;
it = client->inventory.getMisc().begin();
cerr << (*it)->getName() << endl;
それについて少し説明させてください。
clientは、によってアクセス可能なプライベートメンバーを持つtr1::shared_ptrという名前のメンバーを持つオブジェクトを指すです。はのtypedefであり、のプライベートメンバーを返します。inventoryvector<itemPtr>getMisc()itemPtrtr1::shared_ptr<Item>getName()std::stringItem
基本的に、client->inventory.getMisc()要約するとstd::vector、イテレータを最初の要素に到達させようとしています。
問題は、4行目がsegfaultsであるということです。明らかに、それが指すイテレータまたはshared_ptrのいずれかが無効です。最初のcerrステートメントを使用して、ベクトル自体が有効かどうかをテストしました。正しく出力されるので、正しいと思います。
私が間違っていることはありますか?あるいは、これをデバッグするために皆さんは何をしますか?