[C++Builder] Matrice de structures

Matrice de structures [C++Builder] - C++ - Programmation

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

Reply

Marsh Posté le 22-04-2002 à 01:44:17   

Reply

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]

Reply

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]

Reply

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]

Reply

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...?

Reply

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é)

Reply

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]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed