Почему я получаю сообщение об ошибке "использование временного значения как lvalue" - PullRequest
0 голосов
/ 03 апреля 2019

Я не могу понять, почему я получаю сообщение об "использовании временного как lvalue".

void setEdgeLengths(
    const Koala::AssocArray <
        koalaGraph::PEdge, 
        Koala::DijkstraHeap::EdgeLabs<int>
    > &edgeMap, 
    const std::vector<koalaGraph::PEdge> &E) 
{
   int edgeLength = 1;
   for (const auto& e : E) {
      edgeMap[e].length = edgeLength;
   }
}

Переменная edgeLength не является временной.

1 Ответ

1 голос
/ 03 апреля 2019

Из найденной документации здесь (спасибо Google):

Elem Koala::AssocArray<Klucz, Elem, Container>::operator[](Klucz v) const

Возвращает временное значение (неконстантная перегрузка возвращает ссылку, но вставляет новый элемент, еслиключ не существует).Попробуйте вместо этого использовать valPtr.

edgeMap.valPtr(e)->length = edgeLength;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...