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