HELP !!! (liste ...)

Signaler
Messages postés
10
Date d'inscription
samedi 17 avril 2004
Statut
Membre
Dernière intervention
22 avril 2004
-
Messages postés
10
Date d'inscription
samedi 17 avril 2004
Statut
Membre
Dernière intervention
22 avril 2004
-
Bonjour,

J'essaye de creer une liste chainee contenant des objet point (que g definis dans une autre classe qui a ete testee et qui marche) ... Quand j'essaye de la compiler, il me renvoit

168: "List" undeclared (first use this function)
etc ...

Je ne vois pas comment faire ... Qq sait m'aider ???

Merci bcp ...
(c important c pour les etudes ... arghhhh)

voici le code si voulez jeter un oeil et essayer de compiler :

#ifndef List_h
#define List_h
/*
@ author: Robert Delmï¿o
Pierre Mengeot
@ date : 6 mai 2003
classe permettant la gestion d'une structure de donnï¿o de type liste et
utilisant la classe template.
*/
#include
#include "point.cpp"

template <class T>
class List
{
public: List();
~List();
bool add(T *ele);
T *remove();
void next();
void setElement(T *ele);
T *getCurrent();
int getLength()const;
bool isEmpty() const;
bool isOk() const;
bool isFirst();
bool isEnd() const;
void setFirst();

private:

//dï¿oinission d'une structure de donnï¿os
typedef struct NOEUD{
struct NOEUD *next;
T *element;
}Node;

Node *head;
Node *tail;
Node *current;


};




//Constructeur
template <class T>
List<T>::List(){ head currenttail = new Node;
head->next = NULL;
current->next = NULL;
tail->next = NULL;
};

//destructeur
template <class T>
List<T>::~List(){
setFirst();
while(!isEmpty()){
Node *del;
del=current->next;
current->next=del->next;
delete del;
}
delete head;
delete tail;
delete current;
}

//Mï¿ohode ajoutant un ï¿oï¿oent dans la liste
template <class T>
bool List<T>::add(T *ele){ bool isFail (current NULL);
if (current!=NULL){
Node *pro;
pro = new Node;
pro->next = current->next;
pro->element = ele;
current->next= pro;
if (tail == current)tail=current->next;
}
return isFail;
};

//verifie que current ne pointe pas vers un ï¿oï¿oent NULL
template <class T>
bool List<T>::isOk() const{
return current != NULL && current->next != NULL;
};

//supprime current de la liste et renvoie l'ï¿oï¿oent contenu dans le noeud
template <class T>
T *List<T>:: remove(){
T *rem = NULL;
if (isOk()){
rem = current->next->element;
Node *remo=current->next;
current->next=remo->next;
if (tail == remo) {
tail = current;
}
delete remo;
}
return rem;
};

//place current sur le noeud suivant
template <class T>
void List<T>::next(){
if (current!= NULL){
current = current->next;
}
};

template <class T>
void List<T>::setElement(T *ele){
if(isOk()){
current->next->element = ele;
}
};

//retourne l'ï¿oï¿oent qui se trouve dans le noeud aprï¿o current
template <class T>
T *List<T>::getCurrent(){
T *el=NULL;
if (isOk()){
el=current->next->element;
}
return el;
};

//retourne la longueur de la liste
template <class T>
int List<T>::getLength()const{
int counter = 0;
Node *temp;
temp = head;
while(temp->next != NULL){
counter++;
temp = temp->next;
}
return counter;
};

template <class T>
bool List<T>::isEmpty() const{return head->next == NULL;};

template <class T>
bool List<T>::isEnd() const{return current->next == NULL;};

template <class T>
bool List<T>::isFirst() {return current->next->next == NULL;};

template <class T>
void List<T>::setFirst(){current = head;};


int main() {

point *P1 = new point(0.0,0.0,0.0,0.0);
point *P2 = new point(1.0,1.0,0.0,0.0);
point *P3 = new point(2.0,2.0,0.0,0.0);


List L1; ICI CA FOIRE

L1->add(P1);
L1->add(P2);
L1->add(P3);

/* cout<< "|---------------------|" << endl;
cout<< "| TEST CLASSE LIST : |" << endl;
cout<< "|---------------------|" << endl;
cout<< " ca doit donner 1 : " << endl;
cout<< a << endl;
cout<< " ca doit donner 2 : " << endl;
cout<< b << endl;
cout<< " ca doit donner 3 : " << endl;
cout<< c << endl;
cout<< " ca doit donner 4 : " << endl;
cout<< d << endl;
cout<< " ca doit donner 5 : " << endl;
cout<< e << endl;

cout<< "|---------------------|" << endl;
cout<< "|FIN DU TEST : bravo !|" << endl;
cout<< "|---------------------|" << endl;*/

return 1;
};

#endif

4 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
ben c'est du gros bricolage ton truc

deja n'inclu jamais de .cpp, en c++ tu peux utiliser 0 a la place de NULL, aussi struct = class donc pas la peine de planquer une struct derriere un typedef

met la declaration de ta classe liste dans un .h et inclu ds le .cpp ou ya le main
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
tu as défini List comme un modèle donc tu dois faire
List L1;

pour que L1 soit une liste de point*
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
et puis enlève tous ces ; inutiles à la fin de chaque bloc
Messages postés
10
Date d'inscription
samedi 17 avril 2004
Statut
Membre
Dernière intervention
22 avril 2004

merci ...

J'avoue que c pas mal bricolé ... Mais bon ;-) Faut bien se lancer ...