Я реализую поиск пути A * в C++. Проблема, с которой я столкнулась, связана с указателями и ссылками, которые используются со структурами.C++ ссылки на указатели ссылок на структуры ++
После того, как он выходит из цикла for, он пересекает openList (вектор) и устанавливает currentNode в элемент с наименьшим значением F, F имеет тип int.
Когда сиггепЬЫойя получает изменилась, родитель, который был ранее в течение цикла, присвоенным сиггепЬЫойей, получает изменен
NavigationNode currentNode;
currentNode.x = 1;
currentNode.y = 2;
parent = ¤tNode
если я обновляю сиггепЬЫойе другого значение
currentNode.x =23;
currentNode.y = 1;
родитель также будет изменен. Я понимаю, что у родителя есть адрес currentNode. поэтому любые изменения отражаются. Но я хочу знать, как я могу изменить родительское значение. если я потом обновлять сиггепЬЫойе
У меня есть структура объявлен
struct NavigationNode{
int x, y;
float f, g, h;
int value;
NavigationNode *parent;
};
создать startNode из NavigationNode
NavigationNode startNode;
startNode.x = START_X;
startNode.y = START_Y;
startNode.g = 0;
startNode.f = 0;
Я вставил его в вектор с именем openList
vector<NavigationNode> openList;
openList.push_back(startNode);
NavigationNode currentNode;
Затем я начинаю поиск пути
while (!openList.empty())
{
for (auto i = openList.begin(); i != openList.end(); ++i)
{
if (i == openList.begin() || (*i).f <= currentNode.f)
{
currentNode = (*i);
}
}
for (int i = 0; i < 8; i++)
{
NavigationNode nextNode;
nextNode.x = xChange;
nextNode.y = yChange;
// some logic operations
// assign the currentNode to the parentNode
nextNode.parent = ¤tNode;
nextNode.value = map[xChange][yChange];
openList.push_back(nextNode);
}
}
У вас также есть проблема в цикле 'for', чтобы получить' currentNode' не находит узел. Что будет тогда «currentNode»? –
Я добавил вставку элемента в openList – meWantToLearn
Тег 'path' ссылается на пути к файлам, а не на pathfinding. Я скорректировал ваши теги и очистил ваш код, но, пожалуйста, позаботьтесь, чтобы прочитать теги, которые вы используете в будущем. –