Я пытаюсь создать 2D-массив для представления взвешенного графика. Чтобы сделать матрицу, я создаю массив массивов, как показано ниже в конструкторе. Эта матрица сохранит вес ребер, соединяющих два узла. Например, граф [1] [2] будет хранить вес ребра между точками 1 и 2.Ошибка при доступе к матрице в C++
Weighted_graph::Weighted_graph(int n):vertices(n){
double **graph= new double *[vertices];
nodeDegree=new int [n];
edges=0;
for (int c=0;c<vertices;c++)
{
graph[c] = new double[vertices];
nodeDegree[c]=0;
for (int d=0;d<vertices;d++)
{
graph[c][d]=INF;
}
}
}
с графа определяется как double **graph;
Это похоже на работу, пока не попробовать для доступа к переменному графу из других функций, с которых происходит сбой программы. (INF правильно определяется далее в коде).
У вас недостаточно информации для ответа на этот вопрос. Вам также нужно показать код, который действительно рушится. На первый взгляд, однако, double ** graph определен в этой функции и никогда не возвращался. Как другие функции будут знать, какое значение вы ему назначили? – patros 2010-12-06 22:38:23
Что говорят `patros` и` Fritschy`, другие переменные не обращаются к этой переменной с именем `graph`, объем которой ограничен указанным конструктором. Они могут иметь доступ к некоторой другой переменной с тем же именем, но она по-прежнему является другой переменной. – 2010-12-06 22:44:35