antgre
Messages postés10Date d'inscriptionsamedi 17 avril 2004StatutMembreDernière intervention22 avril 2004
-
17 avril 2004 à 11:47
antgre
Messages postés10Date d'inscriptionsamedi 17 avril 2004StatutMembreDernière intervention22 avril 2004
-
17 avril 2004 à 16:47
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;
};
//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;
}
};
//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;
};
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;*/
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 17 avril 2004 à 13:31
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