所以我对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
按值返回向量。所以每次调用都会得到一个不同的向量拷贝。当副本被销毁时,从该副本获得的迭代器无效,这在语句结束时发生。通过引用返回vector
const std::vector<shared_ptr<FSNode>> & FSNode::GetSubNodes()
///////////////////////////////////// ^
{
return subNodes_;
}