У меня возникла проблема в тот момент, когда, по-видимому, я Attempting to reference a deleted function
.Насколько я понимаю, я на самом деле не ссылаюсь на функцию, а на умный указатель на структуру.
Это университетский проект, в котором используются несколько заголовочных файлов и файлов CPP, чтобы мы могли понять, какиспользовать несколько файлов в одном проекте и связывать их вместе с пониманием и использованием полиморфизма.Мы используем несколько файлов в качестве кратких заявлений, которые мы должны.Файлы и определения были предоставлены для нас.
Предполагается, что следующее должно выполнить поиск в ширину на карте местности (массив чисел в диапазоне от 0-3) от начального местоположения до местоположения цели,Речь идет о поиске пути.
Это то, что у меня есть до сих пор:
#include "SearchBreadthfirst.h" // Declaration of this class
#include <iostream>
#include <list>
using namespace std;
bool CSearchBreadthFirst::FindPath(TerrainMap& terrain, unique_ptr<SNode> start, unique_ptr<SNode> goal, NodeList& path)
{
// Initialise Lists
NodeList closedList; // Closed list of nodes
NodeList openList; // Open list of nodes
unique_ptr<SNode>currentNode(new SNode); // Allows the current node to be stored
unique_ptr<SNode>nextNode(new SNode); // Allows the next nodes to be stored in the open list
// Boolean Variables
bool goalFound = false; // Returns true when the goal is found
// Start Search
openList.push_front(move(start)); // Push the start node onto the open list
// If there is data in the open list and the goal hasn't ben found
while (!openList.empty() || goalFound == false)
{
cout << endl << "Open list front:" << openList.front() << endl;
currentNode->x = openList.front()->x;
currentNode->y = openList.front()->y;
currentNode->score = openList.front()->score;
currentNode->parent = openList.front()->parent;
}
}
Выделение этой строки: currentNode->x = openList.front()->x;
как проблема.
The *Тип 1014 * определен в SearchBreadthfirst.h
следующим образом:
using NodeList = deque<unique_ptr<SNode>>;
SNode
также определен в SearchBreadthfirst.h
как:
struct SNode
{
int x; // x coordinate
int y; // y coordinate
int score; // used in more complex algorithms
SNode* parent = 0; // note use of raw pointer here
};
Программа ломается при сборке.Я уже несколько дней пытаюсь обернуть это вокруг головы, поэтому любая помощь очень ценится.Если я что-то пропустил, дайте мне знать, и я добавлю это!
Джеймс