簡體   English   中英

返回解引用的迭代器與對象相同嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM