我有这段代码:
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 语句来测试向量本身是否有效,并且它应该打印出来,所以我认为它是。
有什么我做错了吗?或者,你们会怎么做来调试这个?