[C++] new : tableau de pointeurs

new : tableau de pointeurs [C++] - C++ - Programmation

Marsh Posté le 03-08-2006 à 23:54:28    

Bonjour à tous.
Voilà mon problème, j'ai créé une classe (Points) et je souhaite creer un tableau (tmp) de pointeur d'objets "Points". J'ai reussi avec la ligne :

Code :
  1. Points *tmp[len];

.  
Mais j'aimerai faire la même chose avec l'opérateur new :pfff:  :pfff: . Et c'est là que je bloque malgrès de nombreux essais.  :??:  :??:  
merci.  


---------------
la somme de mes connaissances est limitée, mais la somme de toutes nos connaissances est infinie....
Reply

Marsh Posté le 03-08-2006 à 23:54:28   

Reply

Marsh Posté le 03-08-2006 à 23:56:23    

Salut,
C'est quoi l'essai qui te paraît le plus sensé?
 
Edit: tu as une raison pour ne pas utiliser les vecteurs?

Message cité 1 fois
Message édité par IrmatDen le 03-08-2006 à 23:57:00
Reply

Marsh Posté le 04-08-2006 à 00:10:54    

Bah tu fais un new sur tous les elements du tableau.

Reply

Marsh Posté le 04-08-2006 à 00:33:34    

std::vector<Points>
 
pourquoi Points au pluriel ?
pourquoi un tableau de pointeur sur Points et pas un tableau de Points tout simplement ?

Reply

Marsh Posté le 04-08-2006 à 00:38:12    

IrmatDen a écrit :

Salut,
C'est quoi l'essai qui te paraît le plus sensé?


Je dirais  

Code :
  1. Points **tmp; // pour l'en-tête
  2. tmp = new *Points[1]  //pour la déclaration
  3. tmp[0] = new Points(0, 0); // pour l'utilisation


 

IrmatDen a écrit :


Edit: tu as une raison pour ne pas utiliser les vecteurs?


Je ne connaissais pas les vecteurs, je me penche là dessus.
 

oseam a écrit :

Bah tu fais un new sur tous les elements du tableau.


Tu peux déveloper STP, je ne comprend pas très bien ta méthode...
 
merci pour votre aide. :jap:  :jap:


---------------
la somme de mes connaissances est limitée, mais la somme de toutes nos connaissances est infinie....
Reply

Marsh Posté le 04-08-2006 à 00:44:47    

skelter a écrit :

std::vector<Points>
 
pourquoi Points au pluriel ?


Parce que c'est une classe qui contient déjà plusieurs points, une sorte de containeur.
 

skelter a écrit :


pourquoi un tableau de pointeur sur Points et pas un tableau de Points tout simplement ?


parce que j'ai de toute façon besion du pointeur (ou de la référence) pour communiquer avec le reste du prog et que cela me permet facilement d'utiliser

Code :
  1. tmp[0] = new Points(0, 0);

. En fait, tu a raison... Je ne reussissais pas à utiliser

Code :
  1. tmp[0] = *(new Points(0, 0));

Mais de toute façon ce n'est pas la peine puisque la mémoire est déjà allouée.  
Je vais creuser de ce coté, je vous tient au courant.
Merci beaucoup.  :jap:  :jap:  
 
 
 
 


---------------
la somme de mes connaissances est limitée, mais la somme de toutes nos connaissances est infinie....
Reply

Marsh Posté le 04-08-2006 à 00:48:54    

Citation :

parce que j'ai de toute façon besion du pointeur (ou de la référence) pour communiquer avec le reste du prog et que cela me permet facilement d'utiliser


 
ok mais je vois pas la rapport avec la facon dont un objet est alloué, std::vector<Points>, pas de pointeurs inutiles

Reply

Marsh Posté le 04-08-2006 à 01:08:50    

skelter a écrit :


ok mais je vois pas la rapport avec la facon dont un objet est alloué, std::vector<Points>, pas de pointeurs inutiles


 
Tu as raison, les pointeurs étaient ici inutiles quoique pratiques : ils m'évitaient d'implémenter un opérateur de copie pour ma classe.
merci à vous tous, maintenant ça marche ! ! :)  :)  :)  


---------------
la somme de mes connaissances est limitée, mais la somme de toutes nos connaissances est infinie....
Reply

Marsh Posté le 04-08-2006 à 02:32:16    

bimon a écrit :

Tu as raison, les pointeurs étaient ici inutiles quoique pratiques : ils m'évitaient d'implémenter un opérateur de copie pour ma classe.


 
??
 
eu... ca n'a rien a voir  :??:  tu es sur d'avoir compris quand et pourquoi il faut redefnir la copie (constructeur et operateur = ) pour une classe ?

Reply

Marsh Posté le 04-08-2006 à 11:37:52    

Salut,
bah, moi je dirais qui faut pas se compliquer la vie (meme si je vois pas l'interet des pointeurs, mais bon):
 

Code :
  1. std::vector<Points*> v;
  2. v.push_back(new Points(1,2));


 
Ne pas oublier de faire tout les delete dans le destructeur de l'objet qui possède ce vecteur !!!


Message édité par turn3r le 04-08-2006 à 11:40:24

---------------
Les ventes de véhicules neufs ont chuté de 7%, y'en a marre des pirates qui téléchargent illégalement des voitures sur internet !!
Reply

Marsh Posté le 04-08-2006 à 11:37:52   

Reply

Marsh Posté le 04-08-2006 à 14:13:23    

ca c'est se compliquer la vie
 
encore une fois l'utilisation de pointeurs est inutile dans ce cas

Reply

Marsh Posté le 04-08-2006 à 14:25:35    

[:+1]

Reply

Marsh Posté le 04-08-2006 à 18:45:02    

skelter a écrit :

??
 
eu... ca n'a rien a voir  :??:  tu es sur d'avoir compris quand et pourquoi il faut redefnir la copie (constructeur et operateur = ) pour une classe ?


 
En effet ça n'a rien à voir ici. Mais plus loins j'ai besoin de faire une copie de la liste. Pour copier des pointeurs, aucun pb. Mais pour copier les objets Points, il a fallut que je redéfinisse l'opérateur de copie. Enfin du moins c'est ce que j'ai compris, maintenant je ne suis pas programmeur et je fais peut-être (surement  :) ) une erreur.
 
Sinon c'est vrai, j'ai abandonné les poiteurs et maintenant ça marche super. :D  :D  
 
Merci à tous pour votre aide.  :jap:   :jap:  


---------------
la somme de mes connaissances est limitée, mais la somme de toutes nos connaissances est infinie....
Reply

Sujets relatifs:

Leave a Replay

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