Bonjour,
Je rencontre un souci avec le code suivant. Lorsque j'appelle une fonction qui utilise le membre Square ***matrice de l'extérieur de la classe (par exemple getGrille()->testGrid(); aucun souci). En revanche, appelé de l'intérieur de cette même classe Grid, cela produit une erreur de segmentation.
De plus, j'observe que l'adresse renvoyée par le pointeur sur matrice n'est pas la même si je l'observe de l'intérieur de la classe ou bien par un appel extérieur.
Je ne vois pas trop d'où vient le souci, mais j'imagine que j'ai dû faire une ânerie quelque part...
fichier Grid.h :
fichier Grid.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef DEF_GRID #define DEF_GRID #include "square.h" class Grid{ public: Grid(int abscisse, int ordonnee); ~Grid(); void testGrid(); private: Square ***matrice; int width; int height; }; #endif // DEF_GRID
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include "../headers/grid.h" #include <iostream> Grid::Grid(int absc, int ord) : width(absc), height(ord){ matrice = new Square** [height]; for (int h = 0 ; h<height ; h++){ matrice[h] = new Square* [width]; for (int w = 0 ; w < width ; w++){ matrice[h][w] = new Square(w,h,0); // std::cout << " H : "<<grille[h][w]->getH() << " W : "<< grille[h][w]->getW() << " S : " <<grille[h][w]->getState() << std::endl; } // CREATION OK } } Grid::~Grid(){ for (int h = 0 ; h<height ; h++){ for (int w = 0 ; w < width ; w++){ delete[] matrice[h][w]; } delete[] matrice[h]; } delete[] matrice; } void Grid::testGrid(){ //int test = matrice[0][0]->getH(); Square* test = matrice[0][0]; std::cout<<"TEST : " << test << std::endl; }
Partager