Matrice de structures [C++Builder] - C++ - Programmation
Marsh Posté le 22-04-2002 à 16:09:15
Je pense que tu as déjà un soucis à ce niveau: 
mat2d ** pCase correspond à mat2d *** tCase = matrice 3D 
[jfdsdjhfuetppo]--Message édité par Mog le 22-04-2002 à 16:09:39--[/jfdsdjhfuetppo]
Marsh Posté le 22-04-2002 à 20:08:13
Donc tu dis k'on peut faire une matrice 2d de structures directement, pas obligatoirement une matrice 2d de pointeurs sur structure...? (je viens d'essayer, mais ca a toujours l'air de ne pas passer...)
[jfdsdjhfuetppo]--Message édité par LKoLRn le 22-04-2002 à 21:20:27--[/jfdsdjhfuetppo]
Marsh Posté le 23-04-2002 à 08:39:10
Une structure n'est pas un objet, il n'y a donc pas lieu de l'instancier avec un "new". 
 
Pour ton cas il te suffit de faire: 
typedef struct Case {  
   String nom;  
   int num;  
   char el;  
} tCase; 
et 
tCase mat2d[800][600]; 
[jfdsdjhfuetppo]--Message édité par Mog le 23-04-2002 à 08:39:50--[/jfdsdjhfuetppo]
Marsh Posté le 23-04-2002 à 09:12:37
ok, ca c pour une allocation statik... (en effet ça ça marche) 
Mais il doit bien y avoir une façon de créer la matrice de manière dynamik, non...? 
Marsh Posté le 23-04-2002 à 09:31:51
Oui dans ce cas il te faut créer une classe 'tCase' et des faire 
 
tCase ** matrice; 
 
for(int i = 0; i < matLarg; i++) { 
  for(int j = 0; j < matHaut; j++) { 
    matrice[i][j] = new tCase(); 
  } 
} 
 
Ca me parait correct (mon C++ est un rouillé) 
Marsh Posté le 23-04-2002 à 09:38:58
c fé, g testé, mais ca marche po: 
 
typedef struct Case  
{  
   String nom;  
   int num;  
   char el;  
}  
   tCase; 
 
tCase ** mat; 
 
for (ln=0; ln < mLarg; ln++) 
    for (col=0; col < mHaut; col++) 
        mat[ln][col]=new tMonde; 
 
Le compilo me dit: "Impossible de convertir Case* en Case"... 
 
Par contre, si je déclare ma matrice comme ca: 
tCase *** mat; 
alors ca compile, mais ca tourne toujours po... 
 
Donc ca a po avancé...!? HELP!!! 
[jfdsdjhfuetppo]--Message édité par LKoLRn le 24-04-2002 à 11:07:50--[/jfdsdjhfuetppo]
Marsh Posté le 22-04-2002 à 01:44:17
J'utilise dans un projet C++Builder une structure définie comme telle:
typedef struct Case
{
String nom;
int num;
char el;
}
tCase, * pCase;
j'aimerais que cette struct soit manipulée sous forme d'une matrice 2d, donc je la déclare:
mat2d ** pCase;
et l'initialise comme suit:
int matLarg=800;
int matHaut=600;
int cpt;
mat2d=new pCase*[matLarg];
for (cpt=0; cpt < matLarg; cpt++)
mat2d[cpt]=new pCase[matHaut];
Apparemment ca marche po, cad ke le programme plante à la boucle for...
Klk1 connait-il l'origine de l'erreur...?
MERCI D'AVANCE