我在实现两个在定义和实现中相互使用的类时遇到问题。我的意思是他们都相互依赖。
他们来了:
课堂课程:
class Course {
int courseId;
int maxSignedStudents;
int numOfStudentsSigned;
AVLTree<Student*> signedStudents;
Queue<Student*> waitingQueue;
public:
Course(int courseId, int size);
int getFreeSpots() {
return maxSignedStudents - numOfStudentsSigned;
}
void addStudent(Student* newStudent);
int getId(); //TODO: Added this func
void removeFromSignedStudents(int studentId);
class CourseIsFull: std::exception {};
};
班级学生:
class Student {
int id;
AVLTree<Course*> signedCourses;
//and not "Course"
AVLTree<QueueNode<Student*>* > waitingCourses;
public:
Student(int studentId);
int getId();
void addSignedCourse(Course* newCourse);
void addToWaitingCourses(int courseId, QueueNode<Student*>* newCourse);
Course* getSignedCourse(int courseId);
void removeFromSignedCourses(int courseId);
};
现在我在 Course.h 中添加了一个前向声明,如下所示:
class Student;
课程中有一些函数使用学生的函数,反之亦然。因此,我收到一个前向声明错误说:前向声明'class Student'
我如何实现这两个类,以便它们从我定义每个类的那一刻起就相互了解并且不会出错..
非常感谢。