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 <iostream>
#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 = current =tail = 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