Сбой при доступе к матрице в C ++ - PullRequest
1 голос
/ 07 декабря 2010

Я пытаюсь создать двумерный массив для представления взвешенного графика.Чтобы сделать матрицу, я делаю массив массивов, как показано в конструкторе ниже.Эта матрица будет хранить вес ребер, соединяющих два узла.Например, график [1] ​​[2] будет хранить вес ребра между точками 1 и 2.

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 правильно определен ниже в коде).

Ответы [ 3 ]

1 голос
/ 07 декабря 2010

Полагаю, вы ссылаетесь на член графа объекта, который вы строите. Тем не менее, граф объявлен как локальная переменная там.

0 голосов
/ 07 декабря 2010

Не изобретай велосипед. Используйте boost :: multi_array .

0 голосов
/ 07 декабря 2010

Все дело в области видимости, потому что вы в функции, вы можете повторно использовать имя переменной, но это доступно только в инструкторе.Удалите двойной символ ** перед графом в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...