File de Pile Objet - C++ - Programmation
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.
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();
Marsh Posté le 27-10-2004 à 19:55:40
Reste a sortir les objets puis a sortir les données objet
Merci
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 ?
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
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)
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
Marsh Posté le 27-10-2004 à 20:51:29
ReplyMarsh Posté le 27-10-2004 à 20:53:47
list, mais c ok, on a trouvé une solution
Merci quand même
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 "
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" );
Marsh Posté le 27-10-2004 à 22:36:55
surtout on voit le mec perspicace qui a compris ce qu'il manipulait.
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