私はこのコードを持っています:
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であり、のプライベートメンバーを返します。inventory
vector<itemPtr>
getMisc()
itemPtr
tr1::shared_ptr<Item>
getName()
std::string
Item
基本的に、client->inventory.getMisc()
要約するとstd::vector
、イテレータを最初の要素に到達させようとしています。
問題は、4行目がsegfaultsであるということです。明らかに、それが指すイテレータまたはshared_ptrのいずれかが無効です。最初のcerrステートメントを使用して、ベクトル自体が有効かどうかをテストしました。正しく出力されるので、正しいと思います。
私が間違っていることはありますか?あるいは、これをデバッグするために皆さんは何をしますか?