[英]Is returning a dereferenced iterator the same as an object?
我試圖從向量返回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);
}
但是我無法分配它,因此我試圖查找幾個小時的代碼的這一部分出現錯誤。
問題是您正在嘗試獲取臨時地址。
(p_graph->getVertex(vert2));
表達式(p_graph->getVertex(vert2))
返回一個臨時(p_graph->getVertex(vert2))
該臨時(p_graph->getVertex(vert2))
的生存期是直到;
到達了。
該場景更像是-
Vertex *v2 = & Vertex();
您可以選擇const
限定v2
,從而延長此類臨時文件的使用壽命。 嘗試-
const Vertex* v2 = &(p_graph->getVertex(vert2));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.