Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3316 connectés 

 


Dernière réponse
Sujet : [C++] Utilisation des pointeurs pour tableau
Slyde

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 :D), mais mon cerveau gère mal d'une traite les 3 * d'un coup, ca me prends plusieurs secondes avant de capter :lol:
 
Question d'habitude je suppose...
 
Sinon VC++ 6 n'est pas AINSI alors :D


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Slyde

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 :D), mais mon cerveau gère mal d'une traite les 3 * d'un coup, ca me prends plusieurs secondes avant de capter :lol:
 
Question d'habitude je suppose...
 
Sinon VC++ 6 n'est pas AINSI alors :D

Tetragrammaton IHVH

slyde a écrit a écrit :

J'ai trop du mal à me représenter ce qu'est un Dalle*** :D  




 
Ben c'est un pointeur vers un pointeur vers un pointeur d'un objet Dalle. T'as jamais vu de pointeurs ?  :??:  :??:  :??:  :??:

Tetragrammaton IHVH

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.

Da True Clouseau

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.

bjbebert

gilou a écrit a écrit :

 
 [:purljam]  [:purljam]  [:purljam] 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]

Slyde 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 :??:
Slyde J'ai trop du mal à me représenter ce qu'est un Dalle*** :D
Tetragrammaton IHVH Ca semble tellement evident mais j'ai peut être pas compris la question. Perso, j'aurai fait ça :
 

Code :
  1. int largeur = 10;
  2. int hauteur = 20;  // un damier de 10 dalles sur 20 dalles
  3. // mon tableau 2D de ptr de dalle :
  4. Dalle*** tDalle = new (Dalle**)[largeur];
  5. for(int x=0; x<largeur; x++) {
  6.    tDalle[x] = new (Dalle*)[hauteur];
  7.    for(int y=0; y<hauteur; y++)
  8.       tDalle[x][y] = new Dalle(0,0,0);
  9. }
  10. // etc... le chemin inverse pour le delete


 
A ce propos, malloc est proscrit en C++

Slyde 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 :D
gilou

bjbebert a écrit a écrit :

C'est pas pour les objets le new.Ici, je dirais plutot un malloc.  




 [:purljam]  [:purljam]  [:purljam] On aura tout lu ici.
Parce que malloc, c'est bien connu, ca appelle les constructeurs.
A+,

bjbebert C'est pas pour les objets le new.
Ici, je dirais plutot un malloc.
Krueger 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. :sweat:
bjbebert

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.

Krueger

Code :
  1. int *totaldalle = new int;
  2. *totaldalle     = (nbdalleX * nbdalleY);
  3. int *tdalle     = new int[*totaldalle]; // Creation d'un tableau de dalle
  4. for(int y = 0; y < nbdalleY; y++)
  5. {
  6.   for(int x = 0; x < nbdalleX; x++)
  7.   {
  8.     // Appel de dalle : Envoie la position de la dalle dans l'espace et sa couleur
  9.     cout << "Construction de la dalle : " << x << "," << y << endl;
  10.     dalle tdalle[y * nbdalleY + x] = 0;
  11.   }
  12. }


Ça, c'est pour un tableau d'entiers.

 

[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]

dvincent 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]  



bjbebert 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]
dvincent 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.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)