У меня есть этот бит кода:
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
- это typedef для tr1::shared_ptr<Item>
, а getName()
возвращает приватный std::string
член Item
.
По сути, client->inventory.getMisc()
сводится к std::vector
, и я пытаюсь получить итератор для его первого элемента.
Проблема в том, что четвертая строка имеет ошибки. Очевидно, что итератор или shared_ptr, на который он указывает, недопустимы. Я использовал первый оператор cerr для проверки правильности самого вектора, и он печатает так, как должен, так что я думаю, что это так.
Есть что-то, что я делаю не так? В качестве альтернативы, что бы вы, ребята, сделали, чтобы отладить это?