我正在尝试从向量中返回类型为Vertex
的对象。我只能使用迭代器;返回一个解除引用的迭代器做我想要的吗?更确切地说,我希望将v2
初始化为我正在返回的Vertex
的指针:即:
Vertex* v2;
v2 = &(p_graph->getVertex(vert2));
为了做到这一点,我必须使用getVertex()
来返回Vertex
,并将其添加到&制作指针并将其指定给v2
。 getVertex()
函数是:
Vertex Graph::getVertex(std::string v) { // gets the vertex
for (std::vector<Vertex>::iterator it = vertices.begin(); it != vertices.end(); it++) {
if ((it->getName()).compare(v) == 0)
return *it; // if strings are the same return vertex
}
exit(1);
}
但是我无法分配它,所以在我试图找几个小时的代码的这一部分某处出现了错误。
答案 0 :(得分:4)
问题在于您正在尝试获取临时地址。
(p_graph->getVertex(vert2));
表达式(p_graph->getVertex(vert2))
返回一个临时表,此临时表的生命周期为;
。
情景更像是 -
Vertex *v2 = & Vertex();
您可以选择const
限定v2
,从而延长此类临时工作的续航时间。试试 -
const Vertex* v2 = &(p_graph->getVertex(vert2));