File de Pile Objet

File de Pile Objet - C++ - Programmation

Marsh Posté le 27-10-2004 à 19:17:01    

Je suis en pleine programmation, présentement, on a lu des fichiers source et nous avons créé 90 objets contenant différentes valeur.
 
Comment on fait pour faire le pop de la tête pour pouvoir ensuite accéder à l'objet, faut-il créé un nouvel objet <list> qui prendra les valeurs en compte pour ensuite effacer la tête.
 
Noter que la prog ce fait avec des classes
 
Un produit avec les info -> dans un camion -> mis dans la file -> on veut la tête de file pour classer selon les info
 
c'est ici que ça bloque, je suis pas capable de sortir mes infos objet
 
Merci pour votre aide
 :??:

Reply

Marsh Posté le 27-10-2004 à 19:17:01   

Reply

Marsh Posté le 27-10-2004 à 19:45:40    

Ok. Donne un peu de code, là ou tu bloques, parce que là on a du mal à comprendre quelque chose.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 27-10-2004 à 19:46:29    

oui, utilise STL : list, stack, queue

Reply

Marsh Posté le 27-10-2004 à 19:54:43    

while(!fluxEntreCamion.eof())
 {
  fluxEntreCamion >> noCam >> cap >> noCol >> jour;  
  Camion* unCamion = new Camion(noCam,cap,noCol,jour);
 
  marchandise = (char*)strcat((char*)((unCamion->getNoCollecte()).c_str()),".txt" );
 
 
  ifstream fluxEntreProduit(marchandise,ios::in);
 
  //à partir des données du camion, on lui ses produits, et on les stock dans la bonne pile
  while(!fluxEntreProduit.eof())
  {
   fluxEntreProduit>>id>>type>>lieu>>poids;
   Produit* unProduit = new Produit(id,type,lieu,(float)(*(char*)poids.c_str()));
 
 
   if(unProduit->getType_produit().compare("A" ) == 0)
   {
    unCamion->setTypeA(unProduit);
   }
   else if(unProduit->getType_produit().compare("B" ) == 0)
   {
    unCamion->setTypeB(unProduit);
   }
   else if(unProduit->getType_produit().compare("C" ) == 0)
   {
    unCamion->setTypeC(unProduit);
   }
 
  }
 
  fileDeCamion.push_front(unCamion);
   
  fluxEntreProduit.close();
 }
 
 fluxEntreCamion.close();

Reply

Marsh Posté le 27-10-2004 à 19:55:40    

Reste a sortir les objets puis a sortir les données objet
 
Merci

Reply

Marsh Posté le 27-10-2004 à 20:02:02    

oh du C
 
 while(!fluxEntreProduit.eof())  
--> mauvaise utilisation
 
 (char*)strcat((char*)((unCamion->getNoCollecte()).c_str()),".txt" );
(id,type,lieu,(float)(*(char*)poids.c_str()));
 
t'en as d'autres des immondice comme ça qui font bien tout planter ?

Reply

Marsh Posté le 27-10-2004 à 20:20:27    

Mon programme actuel fonctionne, lorsque je fais le reste, ça cause problème
 
while (!fileDeCamion.empty())
 
 {
 
 
 Camion* CamionArr = (Camion*)fileDeCamion.back();
 
 cout <<jour<<endl;
 
 fileDeCamion.pop_back();
 
 
 }
 
Normalement, je serais supposé voir à l'écran des chiffres de 1 à 5 mais je n'ai que des 5 et beaucoup plus que mon total dans mes fichiers.
 
Merci

Reply

Marsh Posté le 27-10-2004 à 20:30:28    

1) pourquoi tu castes
2) c'est quoi ton conteneur ?

Reply

Marsh Posté le 27-10-2004 à 20:33:22    

1) si on caste pas, ça passe pas
2) on pointe des list  
 
(du mieux des mes connaisance)

Reply

Marsh Posté le 27-10-2004 à 20:45:19    

BobLeFou a écrit :

1) si on caste pas, ça passe pas

alors c'est sans doute un dynamic_cast qu'il te faut. sinon, tu fais sans doute n'importe quoi en mémoire et là ça casse. Commence par corriger pour exclure tout problème à effet de bord. Cela dit je vois ta boucle, c'est normal qu'elle affiche N x la même chose

Reply

Marsh Posté le 27-10-2004 à 20:45:19   

Reply

Marsh Posté le 27-10-2004 à 20:51:29    

Comment déclares-tu fileDeCamion ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 27-10-2004 à 20:53:47    

list, mais c ok, on a trouvé une solution
 
Merci quand même

Reply

Marsh Posté le 27-10-2004 à 22:31:49    

et un fou furieux dans la nature qui fait des cast C parceque "si on caste pas, ça passe pas "

Reply

Marsh Posté le 27-10-2004 à 22:34:45    

Avec du code comme ça, Microsoft résoudrait tout ses problèmes de buffer overflow...
 
marchandise = (char*)strcat((char*)((unCamion->getNoCollecte()).c_str()),".txt" );  

Reply

Marsh Posté le 27-10-2004 à 22:36:55    

surtout on voit le mec perspicace qui a compris ce qu'il manipulait.

Reply

Sujets relatifs:

Leave a Replay

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