Я хочу отсортировать список по кратчайшему пути к месту назначения.Сортировка с функцией, без результата
Я использую функцию сортировки, поэтому я иду от начала до конца и вычисляю, что является лучшим путем для перехода к следующему врагу.
std::vector<std::shared_ptr<Enemy>> ek = model->getAllEnemies();
std::sort(ek.begin(), ek.end(), customLess);
изменил его на структуру:
struct {
bool operator()(const std::shared_ptr<Enemy> &e, const std::shared_ptr<Enemy> &nexthp)
{
int pathcost = findPathfindingNodes(e->getXPos(), e->getYPos(),true);
int pathcost2 = findPathfindingNodes(nexthp->getXPos(), nexthp->getYPos(),true);
return pathcost < pathcost2;
}
} customLess;
Но когда я хочу использовать функцию findpathfindingnodes которая объявлена в том же файле .cpp он выдает ошибку:
/controller.cpp:235: error: 'findPathfindingNodes' was not declared in this scope
int pathcost = findPathfindingNodes(e->getXPos(), e->getYPos(),true);
Что вы имеете в виду под «нет результата»? Что именно происходит неправильно? В каком контексте вы вызываете sort() и где объявляется findPathfindingNodes()? Вы попробовали лямбда? –
Я обновил свой код, теперь я работал со структурой в том же файле .cpp, но до сих пор не могу найти findPathfindingNodes(). Я еще не использовал лямбда, как я должен писать его с лямбдой? –
'findPathfindingNodes (..)' не является методом 'customLess', поэтому компилятор жалуется. Lambdas не поможет вам, если вы не понимаете основные правила определения области. – cmannett85