【发布时间】:2011-10-08 09:49:21
【问题描述】:
请考虑以下三个简化文件:
学生.h:
#ifndef STUDENT_H
#define STUDENT_H
#include "course.h"
class Student
{
private:
Course someCourse;
};
#endif
课程.h:
#ifndef COURSE_H
#define COURSE_H
#include "student.h"
class Course
{
private:
Student someStudent;
};
#endif
和 main.cpp:
#include "student.h"
int main();
这不会编译给我
error C2146: syntax error : missing ';'在标识符“someStudent”之前
它会在更复杂的程序中产生更多错误(即使是正确的代码部分)。我猜设计是错误的:Student 包括Course 和Course 包括Student。我想用它来表示一个学生参加了几门课程,而一个课程有几个学生(我在一个完整的程序中使用了向量,为了简单起见在这里避免了它们)。有什么建议吗?
提前致谢,弗拉德。
更新:
感谢您的快速回复。 Course 类中的Student 类的前向声明(并删除#include "student.h")似乎可以完成这项工作。
抱歉,我认为这无关紧要,但实际上我在每个向量中都使用了 const 指针向量(因为学生不应该能够控制 Course 和 Course 不应该能够控制Student),如:
vector<const Student* const> students; // in Course class
【问题讨论】:
-
Circular Dependency in C++ 的可能重复项