floralastar03
Messages postés4Date d'inscriptionjeudi 15 juin 2006StatutMembreDernière intervention16 juin 2006
-
15 juin 2006 à 17:17
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 2009
-
15 juin 2006 à 20:34
Bonjour
C'EST SUPER URGENT SVP
Je travaille sur un programme qui met en oeuvre des classes
d'objets avec des classes héritées et j'ai voulu intégrer des listes
chainées de pointeurs sur ces objets.
Ma liste se crée bien
mais quand je veux l'afficher, bug. Je possède 3 listes pour 3 classes
différentes ; et quand je souhaite afficher juste 1 liste, les 3 se
mélangent.
Voici le code de ma procédure Afficher :
void AfficherM(PileMul *p) // p est ma tete
{
MultiFonction *temp; //temp est un pointeur sur ma classe Multifonction
temp = p->valeur;
do
{
cout << "\nLa reference est " << temp->GetRef();
cout << "\nLe prix est de " << temp->GetPrix() << "\n";
pause();
temp = p->suiv;
}
while ((temp->GetRef() != 0) && (temp->GetPrix() != 0));
}
Aidez moi s'il vous plait, je dois finir ce programme avant demain soir!!!
Merci d'avance
floralastar03
Messages postés4Date d'inscriptionjeudi 15 juin 2006StatutMembreDernière intervention16 juin 2006 15 juin 2006 à 17:32
Non je ne peux pas mettre p au lieu de temp car p->valeur contient l'adresse du pointeur sur l'objet. je dois récupérer cette adresse pour l'affecter dans une variable objet pour pouvoir accéder aux méthodes de la classe.
Voici comment je remplis ma liste : (pour info)
void AjoutM(PileMul *p, MultiFonction *mul)
{
PileMul *temp;
temp = p;
while (temp->suiv != NULL)
temp = temp->suiv;
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 15 juin 2006 à 20:34
deux remarques :
* tu n'as pas a faire un <while> pour ajouter un element, regarde d'autres sources pour la programmation des listes, on insere en debut de liste, et non a la fin (sinon la ton algorithme est de complexité pas très "jolie")
* 310560 HSylvio a raison, l'erreur est dans <temp = p->suiv;> car cela ne "balaye" en rien ta liste ! Dans ta fonction tu le fais bien : < temp = temp->suiv;>
Pourquoi faire simple quand on peut faire compliqué ?