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

  FORUM HardWare.fr
  Programmation
  C++

  [c++] construction de tableau d'objets

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] construction de tableau d'objets

n°347652
koulip31
Posté le 30-03-2003 à 19:01:10  profilanswer
 

voila je veux creer un tableau d'objets seul hic
je me retrouve avec le meme pointeur pour chaque ligne de mon tableau d'objet
 
mon init de plateau (mon tableau d'objet qui pose pb)
 

Code :
  1. typedef Case *t_pCase;
  2. Plateau::Plateau(uint l, uint h)
  3.   assert (l > 4);
  4.   assert (h > 4);
  5.   assert (l % 2);
  6.   assert (h % 2);
  7.  
  8.   _largeur = l;
  9.   _hauteur = h;
  10.   _plateau = new t_pCase[l];
  11.   for (uint x = 0; x < l; x++)
  12.       {
  13. Objet &toto  = *(new Bloc_incassable);     <<<<<<<
  14. _plateau[x] = new Case[h](toto);           <<<<<<<
  15. for(uint y = 0; y < h ; y++)
  16.   {
  17.     Objet &toto  = *(new Bloc_incassable);
  18.     _plateau[x][y].make(toto);
  19.   }
  20.       }
  21. }


 
suivit de <<<<<< les lignes qui posent pb  
ci joint mon constructeur de cases
 

Code :
  1. Case::Case(Objet &a) : _obj(a)
  2. {
  3.   _obj = a;
  4. }


 
il faudrais que j'alloue une par une les cases au lieux de L par l  lidee que javais eut ettais de faire un contructeur qui ne fasse rien pour allouer les cases et apres faire une fonction make qui fout l'objet sur la case alloué  
sauf que le compilateur geule me disant que mon constructeur doit imperativement allouer obj  
 
voila si kkn a une idee


Message édité par koulip31 le 30-03-2003 à 19:02:24
mood
Publicité
Posté le 30-03-2003 à 19:01:10  profilanswer
 

n°347696
Taz
bisounours-codeur
Posté le 30-03-2003 à 20:09:46  profilanswer
 

moi je comprends rien à ton code, donne ta défintion de classe etc
 
sinon, c'est le parait exemple de code conforme au windows-coding-style
 
1) pas de assert
2) utilise la STL à fond
3) par de constructeur pour les tableaux, c'est le cosntructeur par défaut qui est appelé
4) Case::Case(Objet &a) : _obj(a)
{
 _obj = a;
}  
 :heink:  
 
et une const & serait mieux
5) uint -> unsigned
6) mets tes typedef dans ta classe

n°347701
theshockwa​ve
I work at a firm named Koslow
Posté le 30-03-2003 à 20:40:15  profilanswer
 

Code :
  1. typedef Case *t_pCase;
  2. Plateau::Plateau(uint l, uint h)
  3.   assert (l > 4);
  4.   assert (h > 4);
  5.   assert (l % 2);
  6.   assert (h % 2);
  7.   _largeur = l;
  8.   _hauteur = h;
  9.   _plateau = new t_pCase[l];
  10.   for (uint x = 0; x < l; x++)
  11.       {
  12. Objet &toto  = *(new Bloc_incassable);     <<<<<<<
  13. _plateau[x] = new Case[h](toto);           <<<<<<<
  14. for(uint y = 0; y < h ; y++)
  15.   {
  16.     Objet &toto  = *(new Bloc_incassable);
  17.     _plateau[x][y].make(toto);
  18.   }
  19.       }
  20. }


 
Si tu veux utiliser un constructeur autre que celui par défaut dans la création de ton tableau, tu peux faire :

Code :
  1. Case ***_plateau = new Case**[l];
  2. for(int i = 0; i<l; i++) {
  3.   Bloc_incassable *toto = new Bloc_incassable;
  4.   _plateau[i] = new Case*[h];
  5.   for(int j = 0; j<h; j++)
  6.     _plateau[i][j] = new Case(toto);
  7. }


tu auras tous tes objets identiques, mais ce seront bien tous des objets différents

Code :
  1. Case::Case(Objet &a) : _obj(a)
  2. {
  3.   _obj = a;
  4. }


 
C'est quoi, _obj, là dedans ? :heink:


---------------
last.fm
n°347709
theshockwa​ve
I work at a firm named Koslow
Posté le 30-03-2003 à 20:47:34  profilanswer
 

++Taz a écrit :


sinon, c'est le parait exemple de code conforme au windows-coding-style


heuuuu .... Plutot le parfait exemple de newb-in-C++-coding-style
 
 

++Taz a écrit :

...  donne ta défintion de classe etc ...


 
+1


---------------
last.fm
n°347817
koulip31
Posté le 30-03-2003 à 23:13:23  profilanswer
 

theShOcKwAvE a écrit :

Code :
  1. typedef Case *t_pCase;
  2. Plateau::Plateau(uint l, uint h)
  3.   assert (l > 4);
  4.   assert (h > 4);
  5.   assert (l % 2);
  6.   assert (h % 2);
  7.   _largeur = l;
  8.   _hauteur = h;
  9.   _plateau = new t_pCase[l];
  10.   for (uint x = 0; x < l; x++)
  11.       {
  12. Objet &toto  = *(new Bloc_incassable);     <<<<<<<
  13. _plateau[x] = new Case[h](toto);           <<<<<<<
  14. for(uint y = 0; y < h ; y++)
  15.   {
  16.     Objet &toto  = *(new Bloc_incassable);
  17.     _plateau[x][y].make(toto);
  18.   }
  19.       }
  20. }


 
Si tu veux utiliser un constructeur autre que celui par défaut dans la création de ton tableau, tu peux faire :

Code :
  1. Case ***_plateau = new Case**[l];
  2. for(int i = 0; i<l; i++) {
  3.   Bloc_incassable *toto = new Bloc_incassable;
  4.   _plateau[i] = new Case*[h];
  5.   for(int j = 0; j<h; j++)
  6.     _plateau[i][j] = new Case(toto);
  7. }


tu auras tous tes objets identiques, mais ce seront bien tous des objets différents

Code :
  1. Case::Case(Objet &a) : _obj(a)
  2. {
  3.   _obj = a;
  4. }


 
C'est quoi, _obj, là dedans ? :heink:


 
voila la def de ma classe case
 

Code :
  1. class Case
  2. {
  3. private :
  4.   int _passable;
  5.   Objet &_obj;
  6. public :
  7.   Case(Objet &a);
  8.   void make(Objet &obj);
  9.   void del_obj();
  10.   ~Case();
  11.   void set_obj(Objet &obj);
  12.   Objet &get_obj();
  13.  
  14. };


 
 


Message édité par koulip31 le 30-03-2003 à 23:20:05
n°348158
theshockwa​ve
I work at a firm named Koslow
Posté le 31-03-2003 à 13:11:02  profilanswer
 

Objet ?
 
Et c'est quoi, ta classe Objet ?

n°348579
koulip31
Posté le 31-03-2003 à 20:49:13  profilanswer
 

theShOcKwAvE a écrit :

Objet ?
 
Et c'est quoi, ta classe Objet ?


 
la voila  :D vais publier tout mon code a la fin :p  
 

Code :
  1. class Objet
  2. {
  3. public :
  4.   int _score;
  5.   int _bank, _frame;
  6.   int _nbr_frame;
  7.   int _x, _y;
  8.   int _cassable;
  9.   int _passable;
  10.   int _health;
  11.   int get_type(int &bank, int &frame , int &nbr_frame)
  12.   {
  13.     bank = this->_bank;
  14.     frame = this->_frame;  // attention ici frame de debut  
  15.     nbr_frame = this->_nbr_frame;
  16.   }
  17.   virtual void make() = 0;
  18.   virtual void dest() = 0;
  19.   virtual void move() = 0;
  20. };
  21. class Bomb : public Objet
  22. {
  23.   SDL_TimerID  _id_timer;
  24. public :
  25.   Bomb();
  26.   void make();
  27.   void dest();
  28.   void move();
  29. };
  30. class Bloc_cassable : public Objet
  31. {
  32. public :
  33.   Bloc_cassable();
  34.   void make();
  35.   void dest();
  36.   void move();
  37. };
  38. class Bloc_incassable : public Objet
  39. {
  40. public :
  41.   Bloc_incassable();
  42.   void make();
  43.   void dest();
  44.   void move();
  45. };
  46. class Bloc_vide : public Objet
  47. {
  48. public :
  49.   Bloc_vide();
  50.   void make();
  51.   void dest();
  52.   void move();
  53. };


 
voila voila  
 [:koulip31]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++] construction de tableau d'objets

 

Sujets relatifs
[php] session : pb utilisation avec des "objets"[PHP] Dernière case occupée d'un tableau
[PHP] utiliser beaucoup d'objets en php ?[HTML] tableau probleme
centrer un tableau verticalement (help)[XML XSL] Gestion de tableau
Disabled des boutons qui font parti d'un tableau [résolu][JavaScript] Changer les propriétés d'un tableau ?
Tableau de chaînes de caractères...Roles des objets tables et formulaire au sein d'une sgbdr
Plus de sujets relatifs à : [c++] construction de tableau d'objets


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR