gpt4 book ai didi

c++ - 实现两个依赖类(类的前向声明)

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:42 25 4
gpt4 key购买 nike

我在实现两个在定义和实现中相互使用的类时遇到了问题。我的意思是他们都相互依赖。

他们在这里:

类(class)类(class):

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)学生:

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)中有一些函数使用学生的函数,反之亦然。因此,我收到一个前向声明错误说:“类(class)学生”的前向声明

我如何实现这两个类,以便它们从我定义每个类的那一刻起就相互了解并且不会出现错误..

非常感谢。

最佳答案

这应该可以正常工作。在course.h中可以前向声明class Student;,在student.h中可以前向声明class Course;。您指定的错误只有在您实际定义类然后声明它时才会发生,这可能是您包含文件的顺序的结果。确保任何前向声明都在包含实际定义之前(#include 只不过是一种“内联添加”文字其他文件的奇特方式),错误就会消失。

关于c++ - 实现两个依赖类(类的前向声明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16178701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com