Так что я относительно новичок в C ++, и у меня возникла проблема со следующим std :: vector :: const_iterator:
for (vector<shared_ptr<FSNode>>::const_iterator itr = curNode->GetSubNodes().begin() ; itr != curNode->GetSubNodes().end(); itr++)
{
shared_ptr<FSNode> nextNode = *itr;
GetXMLFromNode(nextNode, xmlDom, dirEle);
}
Метод доступа GetSubNodes
const std::vector<shared_ptr<FSNode>> FSNode::GetSubNodes()
{
return subNodes_;
}
По сути, получение ошибки времени выполнения, когда ожидается, что itr будет обычным итератором. Кто-нибудь знает, где я иду не так? Вероятно, это действительно простая проблема, но я не вижу ее сейчас.
GetSubNodes
возвращает вектор по значению. Таким образом, вы получаете новую копию вектора при каждом вызове. Итератор, который вы получаете из этой копии, недействителен, когда копия уничтожена, что происходит к концу оператора. Вместо этого верните вектор по ссылке.
const std::vector<shared_ptr<FSNode>> & FSNode::GetSubNodes()
///////////////////////////////////// ^
{
return subNodes_;
}
Других решений пока нет …