creer un grand nombre d'objets

creer un grand nombre d'objets - C++ - Programmation

Marsh Posté le 12-05-2008 à 17:14:44    

Salut,
 
Je cherche à faire une médiathèque en c++. Je bloque au niveau du chargement du fichier des données de la médiathèque en mémoire.
 
Les médias sont entrés sous forme d’objet dans la mémoire, puis sauvegardés dans un fichier texte.
 
Quand on lance le programme, les médias doivent être chargés en mémoire.
 
Voici le programme que je voudrais faire :
1) je recrée les médias sous forme d’objets en lisant le fichier Txt
2) je les place dans un tableau (vector) pour pouvoir les utiliser plus tard
 
Je ne vois pas comment nommer les objets à créer. Est t il possible d’utiliser des indices : a1, a2, a3, …, a999 ?? Existe t il des outils permettant cela ?
 
merci de votre aide.

Reply

Marsh Posté le 12-05-2008 à 17:14:44   

Reply

Marsh Posté le 12-05-2008 à 17:17:36    

boost::serialization

 

sinon, plus pragmatiquement :

 
Code :
  1. vector<Media> medias;
  2. while( ?? ) // tant que tu lis des media du tx
  3. {
  4.   Media m;
  5.   m = lire_media_depuis_fichier();
  6.   medias.push_back(m);
  7. }


Message cité 1 fois
Message édité par Joel F le 12-05-2008 à 17:20:45
Reply

Marsh Posté le 12-05-2008 à 19:10:44    

j'ai besoin de creer dynamiquement les objets, car ils sont modifiables et sont de differents types : media<-CD, media<-DVD ...
 
en remplacant :
Media m;    par     Media *media = new CD();
ou  Media *media = new DVD();
cela marche t il toujours ?
 
merci

Reply

Marsh Posté le 12-05-2008 à 19:21:11    

bah la il fut faire une factory abstraite et mettre en place un mecanisme de serialisation. boost::serialize :o

Reply

Marsh Posté le 13-05-2008 à 11:50:35    

Joel F a écrit :

boost::serialization
 
sinon, plus pragmatiquement :
 

Code :
  1. vector<Media> medias;
  2. while( ?? ) // tant que tu lis des media du tx
  3. {
  4.   Media m;
  5.   m = lire_media_depuis_fichier();
  6.   medias.push_back(m);
  7. }




wof, std::copy / back_inserter

Reply

Marsh Posté le 17-05-2008 à 17:18:24    

si ca peut aider qqn, j'ai fini par faire comme ca :
 
vector<Medias*> tabMediatheque;
int i = 0;
 
ifstream fichier("mediatheque.txt", ios::in);  // on ouvre le fichier en lecture
   
 if(fichier)                // test d'ouverture
 {
  string ligne, test;
  while (getline(fichier,ligne))
  {
   
   tabMediatheque.push_back(new CD);
   tabMediatheque.at(i) -> set_id(Id);
                        i++;
                        ...

Reply

Marsh Posté le 17-05-2008 à 19:11:35    

bah pareil sans new

Reply

Sujets relatifs:

Leave a Replay

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