Utilisation des pointeurs pour tableau [C++] - Programmation
Marsh Posté le 15-02-2002 à 19:33:09
Tu peux créer un tableau de tableaux : Element**, c'est à dire un tableau de X pointeurs, eux même pointant sur des tableaux de Y éléments.
Le plus simple serait peut être de créer un tableau de X*Y élements. Tu accèdes à un élément (x, y) par Elements[Y*y + x]
Marsh Posté le 15-02-2002 à 19:41:13
Je viens de tenter ceci :
-------
int *totaldalle = new int;
*totaldalle=(nbdalleX*nbdalleY);
int tdalle[*totaldalle]; // Creation d'un tableau de dalle
for(int y=0;y<nbdalleY;y++)
{
for(int x=0;x<nbdalleX;x++)
{
// Appel de dalle : Envoie la position de la dalle dans l'espace et sa couleur
cout << "Construction de la dalle : " << x <<","<<y << endl;
// dalle tdalle[numdalle](0,0,0);
}
}
---------
Mais ,j'obtiens pour le int tdalle[*totaldalle] :
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'tdalle' : unknown size
bjbebert a écrit a écrit : Tu peux créer un tableau de tableaux : Element**, c'est à dire un tableau de X pointeurs, eux même pointant sur des tableaux de Y éléments. Le plus simple serait peut être de créer un tableau de X*Y élements. Tu accèdes à un élément (x, y) par Elements[Y*y + x] |
Marsh Posté le 15-02-2002 à 21:17:15
Code :
|
Ça, c'est pour un tableau d'entiers.
[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]
Marsh Posté le 15-02-2002 à 23:00:51
dvincent a écrit a écrit : int *totaldalle = new int; *totaldalle=(nbdalleX*nbdalleY); int tdalle[*totaldalle]; // Creation d'un tableau de dalle |
Ca marche pas, ca. Pour déclarer un tableau avec un espace deja alloué, faut que le compilateur puisse déterminer la taille dès la compilation. Ca n'est pas le cas ici.
Marsh Posté le 16-02-2002 à 20:55:04
Ben je sais pas trop, mais il devrait y avoir un moyen de déclarer un tableau de taille variable (avec l'opérateur new) plus ou moins de cette façon. Reste à voir la syntaxe exacte, je ne m'en souviens plus trop.
Marsh Posté le 16-02-2002 à 21:08:58
C'est pas pour les objets le new.
Ici, je dirais plutot un malloc.
Marsh Posté le 17-02-2002 à 09:44:21
bjbebert a écrit a écrit : C'est pas pour les objets le new.Ici, je dirais plutot un malloc. |
On aura tout lu ici.
Parce que malloc, c'est bien connu, ca appelle les constructeurs.
A+,
Marsh Posté le 17-02-2002 à 11:26:10
Quelqu'un à une soluce pour ce problème de déclaration de tableau avec une variable et du coup blocage du compilo ? j'ai le même pb, une soluce m'interesse
Marsh Posté le 17-02-2002 à 15:38:23
Ca semble tellement evident mais j'ai peut être pas compris la question. Perso, j'aurai fait ça :
Code :
|
A ce propos, malloc est proscrit en C++
Marsh Posté le 17-02-2002 à 16:44:01
J'ai trop du mal à me représenter ce qu'est un Dalle***
Marsh Posté le 17-02-2002 à 16:46:54
ah si ca y est je vois.
Le problème c'est que je crois que ce sera même problème pour dvincent puisque c'est le même principe : on passe une var en taille du tableau et apparament ca ne plait pas à son compilo. Essaie avec un const devant
Marsh Posté le 17-02-2002 à 17:31:04
gilou a écrit a écrit : On aura tout lu ici. Parce que malloc, c'est bien connu, ca appelle les constructeurs. A+, |
Qui a parlé d'objets ?? Pour moi, c'est juste un tableau de structures.
Edit : c bon, j'ai compris. J'ai oublié le ? à la fin de la première phrase. En fait, on est d'accord.
[jfdsdjhfuetppo]--Message édité par bjbebert--[/jfdsdjhfuetppo]
Marsh Posté le 17-02-2002 à 17:35:56
bjbebert a écrit a écrit : Qui a parlé d'objets ?? Pour moi, c'est juste un tableau de structures. |
En c++, une structure est une classe, elle a notamment un constructeur par défaut.
Marsh Posté le 17-02-2002 à 17:59:06
slyde a écrit a écrit : ah si ca y est je vois. Le problème c'est que je crois que ce sera même problème pour dvincent puisque c'est le même principe : on passe une var en taille du tableau et apparament ca ne plait pas à son compilo. Essaie avec un const devant |
C'est la seule manière. Si son compilo ne l'accepte pas c'est qu'il n'est pas ANSI.
Marsh Posté le 17-02-2002 à 18:01:47
slyde a écrit a écrit : J'ai trop du mal à me représenter ce qu'est un Dalle*** |
Ben c'est un pointeur vers un pointeur vers un pointeur d'un objet Dalle. T'as jamais vu de pointeurs ?
Marsh Posté le 17-02-2002 à 19:59:05
tetragrammaton IHVH a écrit a écrit : Ben c'est un pointeur vers un pointeur vers un pointeur d'un objet Dalle. T'as jamais vu de pointeurs ? |
si (malheureusement je serais content si je pouvais tjrs faire du passage par référence ), mais mon cerveau gère mal d'une traite les 3 * d'un coup, ca me prends plusieurs secondes avant de capter
Question d'habitude je suppose...
Sinon VC++ 6 n'est pas AINSI alors
Marsh Posté le 15-02-2002 à 17:19:08
Salut !
J'ai besoin d'un petit coup de main.
je dois me créer un tableau d'éléments qui ne sont pas définis au depart puisque passés en paramètre de mon constructeur.
les paramètres passés sont X et Y definissant le nombre d'élements à afficher sur une grille en X et Y (pour faire un damier de dalles)
je dois donc créé un tableau de X*Y éléments et donc ils ne peuvent donc être créé statiquement. pour ensuite appelé mon constructeur de dalles
Merci de votre aide.