Bonjour,
Je souhaite utiliser une liste chaînée sur des départements (d'une université)
Avant même de chercher à utiliser des méthodes sur ma liste chaînée, j'ai des erreurs de compilation.
Le poblème est que je ne sais pas vraiment utiliser ces listes ...

J'utilise 4 fichiers :
  1. Department.hh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    class Department{
    private:
    	string departmentname;
    	string departmentfaculty;	
    	int numberofstudents;
    	int numberofstaffs;
     
    public:
    	Department(string, string, int, int);
    	string getDepartmentName();
    	string getDepartmentFaculty();	
    	int getNumberOfStudents();
    	int getNumberOfStaffs();
     
    //create the dynamic linked list
    struct NodeDepart
    {
    	string departmentname;
    	string departmentfaculty;	
    	int numberofstudents;
    	int numberofstaffs;
    	NodeDepart* link;			
    };
    typedef NodeDepart* NodePointer;
     
    NodePointer head;
    NodePointer currPointer;
    NodePointer newNodePointer;
    Déjà ici, je pense pouvoir ne mettre que la définition de la structure et pas parler des attributs et méthodes et donc, je n'aurais pas besoin de fichier Department.cc (voir plus loin pourquoi je les mets quand même)
  2. Department.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #include "Department.hh"
     
    Department::Department(string nom, string faculte, int eleve, int personnel)
    {
    	departmentname=nom;
    	departmentfaculty=faculte;	
    	numberofstudents=eleve;
    	numberofstaffs=personnel;
    }
     
     
    //getter for departmentname
    string Department::getDepartmentName(){
    	return departmentname;
    }
     
    //getter for departmentfaculty
    string Department::getDepartmentFaculty(){
    	return departmentfaculty;
    }
     
    //getter for numberofstudents	
    int Department::getNumberOfStudents(){
    	return numberofstudents;
    }
     
    //getter for numberofstaffs
    int Department::getNumberOfStaffs(){
    	return numberofstaffs;
    }
  3. Departmentlist.hh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class Departmentlist{
     
    private :
    	list<Department> mylistofdepartment;
    	NodePointer head;
     
    public:
    	Departmentlist(const char*);
    	Departmentlist();
    	~Departmentlist();
    	void printDepartmentNames() const;
    	void printPropertiesOfParticularDepartment(string nomdepart);
    	void searchParticularDepartmentName(string recherchedepart);
    	void AddDepartment(string nomdepartment,string facultedepartment, int etudiantsnumber,int personnelnumber);
    	void DeleteEvent(string departtodestroy);
  4. Departmentlist.cc
    Pour le moment, dans ce fichier, je ne fais que lire, dans mon fichier department.txt, ma liste de départements (en utilisant une simple liste). A cause de cette lecture, j'ai besoin de
    Department personneajouter(var1,var2,var3,var4);
    et donc d'un constructeur prenant 4 paramètres dans Department et donc j'ai besoin de la déclaration des attributs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Departmentlist::Departmentlist(const char* fileName)
    {
     
    	ifstream fichier(fileName) ;
    	cout <<"Here are the events contained in the text file event.txt :\n";
    	string var1; 
    	string var2;
    	int var3;
    	int var4;
    	if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
    	{
            	// cette boucle s'arrête dès qu'une erreur de lecture survient
            	while( fichier >> var1 && fichier >> var2 && fichier >> var3 && fichier >>var4)
            	{
    				Department personneajouter(var1,var2,var3,var4);
    				mylistofdepartment.push_back(personneajouter);
            	}
    			fichier.close();  
    	}
    	else  
    	{
    		cout << "Impossible d'ouvrir le fichier !" << endl;
    	}
     
     
    	for (list<Department>::iterator it = mylistofdepartment.begin (); it != mylistofdepartment.end (); ++it) 
    	{
    		cout << " Name : " << it->getDepartmentName();  
    		cout << " Faculty : " << it->getDepartmentFaculty();
    		cout<< " Students : " << it->getNumberOfStudents();
    		cout<< " Staff: " << it->getNumberOfStaffs() <<endl;
    	}
     
    }
Department.hh

Voici l'erreur que j'obtiens avec ce code :
g++ -c -o Department.o Department.cc
g++ -c Department.cc -o department.o
g++ -c -o Departmentlist.o Departmentlist.cc
In file included from Departmentlist.cc:4:
Departmentlist.hh:17: erreur: ‘NodePointer’ does not name a type
make: *** [Departmentlist.o] Erreur 1
Pour ceux qui me liront jusqu'ici, savez-vous d'où vient cette erreur?
Et que dois-je faire avec mes attributs et méthodes de la classe Department?

Merci pour vos conseils