我有这段代码:
cerr << client->inventory.getMisc().front()->getName() << endl;
vector<itemPtr>::iterator it;
it = client->inventory.getMisc().begin();
cerr << (*it)->getName() << endl;
让我解释一下:
client
是一个tr1::shared_ptr
指向一个对象的对象,该对象具有一个名为的成员,该成员inventory
具有一个可访问的私有vector<itemPtr>
成员getMisc()
。itemPtr
是 的类型定义tr1::shared_ptr<Item>
,并getName()
返回 的私有std::string
成员Item
。
本质上,client->inventory.getMisc()
归结为 a std::vector
,我试图让迭代器指向它的第一个元素。
问题是第四行段错误。显然,它指向的迭代器或 shared_ptr 都是无效的。我使用第一个 cerr 语句来测试向量本身是否有效,并且它应该打印出来,所以我认为它是。
有什么我做错了吗?或者,你们会怎么做来调试这个?