Bonjour, J'ai cherché partout pour résoudre ce problème et j'ai essayé plusieurs façons différentes de définir le ListNode dans le fichier. fichier cpp. Pour une raison quelconque, la structure ne peut pas être partagée avec le fichier .cpp. Toute aide sera grandement appréciée. MerciJe n'arrive pas à comprendre pourquoi le membre privé du fichier d'en-tête ne fonctionne pas dans le fichier cpp
fichier .H:
#ifndef SORTEDLIST_H
#define SORTEDLIST_H
#include "Student.h"
/*
* SortedList class
*
* A SortedList is an ordered collection of Students. The Students are ordered
* from lowest numbered student ID to highest numbered student ID.
*/
class SortedList {
public:
SortedList();
// Constructs an empty list.
bool insert(Student *s);
// If a student with the same ID is not already in the list, inserts
// the given student into the list in the appropriate place and returns
// true. If there is already a student in the list with the same ID
// then the list is not changed and false is returned.
Student *find(int studentID);
// Searches the list for a student with the given student ID. If the
// student is found, it is returned; if it is not found, NULL is returned.
Student *remove(int studentID);
// Searches the list for a student with the given student ID. If the
// student is found, the student is removed from the list and returned;
// if no student is found with the given ID, NULL is returned.
// Note that the Student is NOT deleted - it is returned - however,
// the removed list node should be deleted.
void print() const;
// Prints out the list of students to standard output. The students are
// printed in order of student ID (from smallest to largest), one per line
private:
// Since ListNodes will only be used within the SortedList class,
// we make it private.
struct ListNode {
Student *student;
ListNode *next;
};
ListNode *head; // pointer to first node in the list
};
#endif
fichier .cpp:
#include <iostream>
#include "SortedList.h"
using namespace std;
SortedList::SortedList() : head(NULL){}
Student SortedList::*find(int studentID){
ListNode *current;
current = head;
if(current != NULL){
while(current != NULL){
if(current.student.getID() == studentID){
return current.student;
}
current = current.next;
}
}
return NULL;
}
ERREURS PERTINENTS: C: \ Users \ Charles \ Desktop \ SortedList.cpp En fonction Student SortedList::* find(int)': 12 C:\Users\Charles\Desktop\SortedList.cpp
ListNode » au noir (utilisez d'abord cette fonction)
Est que vraiment la * première * erreur que vous avez obtenu de ce code? Toujours travailler votre chemin à travers les erreurs dans l'ordre. Lorsque le compilateur rencontre une erreur, il fait certaines suppositions sur ce que vous vouliez dire pour continuer à essayer de compiler et vous donner plus de messages d'erreur, mais parfois, les erreurs ultérieures sont juste des effets secondaires d'une mauvaise supposition du compilateur. Si vous commencez à travailler sur des erreurs à partir du milieu de la liste, vous risquez de perdre du temps à essayer de résoudre des problèmes qui ne sont pas vraiment des erreurs. Commencez toujours en haut. –
Ce qui précède est un bon conseil, mais j'ai compilé ce test moi-même (avec une définition stub de Student) et c'était vraiment la première erreur. L'OP a réussi à trouver l'un des canons vraiment * sournois * que C++ fournit dans le but de vous tirer dans le pied. – zwol
Et voici quelques conseils: À l'avenir, quand vous avez un autre problème que vous ne comprenez pas et que vous voulez demander de l'aide, la première chose à faire est de réduire votre code au * plus petit programme possible * qui produit la même erreur. Il est presque toujours possible de le réduire à un fichier et à moins de 20 lignes.Vous pouvez très bien comprendre quel est le problème dans ce processus, et même si vous ne le faites pas, il sera plus facile pour les gens de vous aider. – zwol