[BOOST] utilisation de shared_array

utilisation de shared_array [BOOST] - C++ - Programmation

Marsh Posté le 05-07-2006 à 18:26:53    

Bonjour,  
   j'ai actuellement un problème avec les pointeurs intelligent de Boost car je n'arrive pas a allouer de la mémoire dynamiquement :
car voilà pour créer ce type de pointeur je sais faire ça :

Code :
  1. #include<boost/shared_ptr.hpp>
  2. int main(int argc, char **argv)
  3. {
  4.    boost::shared_array<int> array(new int[10]);
  5.    //traitement...
  6.    return 0;
  7. }


 
mais voilà moi je voudrais faire un truc du genre car au moment où je déclare array je ne suis pas sencé connaitre le nombre d'entier sur lequel je veux pointer  

Code :
  1. #include<boost/shared_ptr.hpp>
  2. int main(int argc, char **argv)
  3. {
  4.    boost::shared_array<int> array;
  5.    array = new int[10];
  6.  
  7.    //traitement...
  8.    return 0;
  9. }


 
mais bon la ça marche pas. Je comprends bien que les shared_array sont des classes donc on peut pas les utiliser comme ça. Mais j'arrive pas a trouver dans la doc de boost le moyen de faire ce que je veux. Je me doute bien qu'il doit exister un moyen...
 
Donc voilà si quelqu'un pourrait m'aider ce serait super sympa... Merci :)

Reply

Marsh Posté le 05-07-2006 à 18:26:53   

Reply

Marsh Posté le 05-07-2006 à 18:34:25    

?  
ou est le probleme ? en c++ tu peux déclarée tes variables ou tu veux, et pas seulement en début de bloc
 

Code :
  1. #include<boost/shared_ptr.hpp>
  2. int main(int argc, char **argv)
  3. {
  4.    //traitement...
  5.    boost::shared_array<int> array(new int[n]);
  6.    //traitement...
  7.    return 0;
  8. }


 
il y a aussi la methode reset (voir doc)

Reply

Marsh Posté le 05-07-2006 à 18:45:32    

Oui, bon la bien sûr... :)  
mais bon l'histoire c'est que je suis en train de faire un loader de fichier .MS3D (Milkshape 3D) et donc j'ai créé une classe Object qui contient tout les vertices, les groupements de vertices pour former les triangles, les groupements de triangles pour former les Mesh,...
Alors dans ma class j'ai déclaré tous mes shared_array et au fur et a mesure que je lis mon fichier MS3D je prend connaissance du nombre de Vertices et tout...
et donc la je veut allouer de la mémoire dynamiquement pour pouvoir les stocker...  
donc c'est pour celà que je vous demmandait comment je pouvais faire  

Reply

Marsh Posté le 05-07-2006 à 18:47:42    

utilises plutot std::vector

Reply

Marsh Posté le 05-07-2006 à 19:09:51    

ha bha oui, j'suis con...  
Merci :)
 
ps : mais sinon alors c'était pas possible ?

Reply

Marsh Posté le 05-07-2006 à 19:24:21    

Amonchakai a écrit :

ha bha oui, j'suis con...  
Merci :)
 
ps : mais sinon alors c'était pas possible ?


 
si, mais utilise std::vector et ajoute les elements avec push_back, la taille tu l'as a la fin du traitement avec la methode size()
 
edit: c'est bien de chercher à utiliser boost mais ne fait pas une fixation dessus, dans ce cas la un vector convient mieux et dans boost il y beaucoup de bibliotheques tres pratiques autres que les smart pointer


Message édité par skelter le 05-07-2006 à 19:26:43
Reply

Marsh Posté le 05-07-2006 à 20:15:15    

Ok, Merci de ta réponce !

Reply

Sujets relatifs:

Leave a Replay

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