请考虑以下三个简化文件:
student.h:
这不会编译,会提示错误C2146:缺少“;”的语法错误,标识符为'someStudent'。在更复杂的程序中,它会产生更多的错误(即使对于正确的代码部分也是如此)。我想设计可能有问题:
Vlad,提前谢谢。 更新: 感谢快速回复。在
student.h:
#ifndef STUDENT_H
#define STUDENT_H
#include "course.h"
class Student
{
private:
Course someCourse;
};
#endif
course.h:
#ifndef COURSE_H
#define COURSE_H
#include "student.h"
class Course
{
private:
Student someStudent;
};
#endif
和 main.cpp 文件:
#include "student.h"
int main();
这不会编译,会提示错误C2146:缺少“;”的语法错误,标识符为'someStudent'。在更复杂的程序中,它会产生更多的错误(即使对于正确的代码部分也是如此)。我想设计可能有问题:
Student
包含 Course
,Course
包含 Student
。我的意图是表示一个学生参加多门课程,而一门课程有多个学生(在完整的程序中使用向量,在这里简化了)。您有什么建议吗?Vlad,提前谢谢。 更新: 感谢快速回复。在
Course
类中提前声明Student
类(并删除#include "student.h"
)似乎可以解决问题。
抱歉,我认为这里无关紧要,但事实上我在每个类中都使用常量指针的向量(因为一个学生不应该能够控制一门Course
,而一门Course
也不应该能够控制一个Student
)。vector<const Student* const> students; // in Course class