2013-09-02 4 views
1

Я пытаюсь вернуть Vertex &, вот код:Как вернуть значение в векторе по ссылке?

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); 
} 

Проблема заключается в том, что getVertex помечен как несовместимые и it в возвращении помечен как ссылка типа Vertex & (неконстантного квалифицированного) не может инициализируется значением с типом std::vector ... Как исправить эти ошибки?

+2

'return * it;' ?? –

+0

Спасибо, также мне пришлось изменить имя getVertex на getRefVertex, и все должно работать, я думаю, что было столкновение, так как у меня было два getVertex, возвращающих ссылку, а другой объект. – Napalidon

ответ

7

Вы пытаетесь вернуть итератор , а не то, на что указывает итератор. Поэтому вам нужно вернуть *it.

Смежные вопросы