Я работаю над этим фрагментом кода, и у меня постоянно возникает ошибка сегментации.Что касается жизни, я не могу понять, почему, я знаю, что ошибка сегментации - это когда вы пытаетесь следовать нулевому указателю, но дело в том, что в моем коде «u-> previous» не равно NULL, и «u», япроверено.Если я изменю условие в цикле while на (u! = NULL), оно дважды выполнит итерацию, прежде чем произойдет сбой в «u-> isGreen». Еще раз я проверил каждую итерацию, чтобы определить, не было ли u нулевым.
int extractOptimalPath() {
Node *u = nodes[NUM_NODES - 1];
int i = 0;
while (u != NULL) {
cout << i << endl;
u->isGreen = true;
u = u->previous;
i++;
}
return 0;
}
"node" - это массив указателей на фактические объекты Node.Я точно знаю, что «u-> previous» существует в моих узлах, а «isGreen» инициализируется как false;
Это класс Node, если вы хотите увидеть, что:
class Node {
public:
GLfloat x, y, z;
int numLinks;
Node *link1;
Node *link2;
GLfloat distance;
Node *previous;
bool isGreen;
Node(GLfloat x, GLfloat y, Node *link1, Node *link2);
Node(GLfloat x, GLfloat y, Node *link1);
Node();
Node(GLfloat x, GLfloat y);
~Node();
bool dijkstra(Node* graph[], Node *source, Node *target); //returns true if a path to target is found
int dist(Node *n1, Node *n2);
int extractOptimalPath(Node* graph[]);
};
Что может быть причиной ошибки сегмента?