Я хочу сделать заполненную матрицу в качестве переменной экземпляра в моем .hpp файле, но в итоге получаю ошибку seg.
У меня есть класс graphe. В моем файле. cpp я заполнил матрицу смежности следующим образом:
void Graphe::shortRoute( void ){
std::vector<vector<int>> matrix(_adjacences.size(), vector<int>(_adjacences.size()));
std::vector<vector<int>> shortPath(_adjacences.size(), vector<int>(_adjacences.size()));
for (unsigned i = 0; i < _adjacences.size(); i++) {
for (auto j : *_adjacences[i]) {
matrix[i][j->sommetArrive] = j->longueur;
}
}
... more and more code to get a filled shortPath matrix.
Я реализовал алгоритм Флойда, и здесь все работает отлично, и я распечатал матрицу, чтобы проверить это, все в порядке.
полученные матрицы matrix
и shortPath
Я хотел сделать в качестве переменных экземпляра
Я пробовал следующее ЭТО ПРИЧИНА ОШИБКА СЕГМЕНТА ПОЧЕМУ?
for ( unsigned i = 0; i < _adjacences.size(); i++)
for (unsigned j = 0; j < _adjacences.size(); j++){
shortPath[i][j] = SP[i][j];
matrix[i][j] = M[i][j];
}
и в моем файле .hpp я объявил SP и M следующим образом:
class Graphe
{
private:
vector< vector< Arc * > * > _adjacences;
std::vector<vector<int>> M;
std::vector<vector<int>> SP;
....
как только я запускаю программу, я получаю ошибку seg из этого нового добавления
Ar c is следующим образом:
class Arc
{
public:
int sommetArrive;
int longueur;
string nom;
Arc( int a_sommetArrive, int a_longueur, string a_nom );
virtual ~Arc( void );
friend ostream & operator <<( ostream &, Arc const & );
};