基本上我的代码有2个类:
class teacher {
//has object of class course
};
class course {
//has object of class teacher
};
这是行不通的,因为老师无法访问课堂课程,因为它是在课堂老师之后编写的。所以然后我尝试创建类原型。
class teacher;
class course;
.....
class teacher {
//object of class course
};
class course {
//object of class teacher
};
仍然无效。是的,我确实需要这些类来保存彼此的对象。请告诉我这也可以按照我想要的方式工作,并且我不必更改代码。非常感谢您的帮助。谢谢。
答案 0 :(得分:1)
适用于您可能想做的事情的代码:
teacher.h
#include <vector>
using std::vector;
class Course;
class Teacher
{
vector<Course*> courses;
...
};
course.h
#include <vector>
using std::vector;
class Teacher;
class Course
{
vector<Teachers*> teachers;
...
};
请注意,在源文件中,您将希望同时包含两个头文件,因为Teacher
目前不知道Course
的功能,反之亦然。
我这样做是为了让您更容易理解原始指针,但是您应该在某个时候切换到某种智能指针(在这种情况下,可能是weak_ptr
)。
顺便说一句,通常,人们用主要的首字母写班级名。
答案 1 :(得分:0)
我认为您应该将此视为数据库问题。
让我们有另一个包含教师和课程的表:
class Teacher_Course
{
Teacher t;
Course c;
}
该表可以表示为:
std::vector<Teacher_Course> tc_table;
图片将是:
+---------+----------+
| Teacher | Course |
+---------+----------+
| Schults | Math 1 |
+---------+----------+
| Schults | Calculus |
+---------+----------+
| Jonez | History1 |
+---------+----------+
此架构允许您的Teacher
和Course
类是独立的。 关系由Teacher_Course
类建模。
因此消除了Teacher
和Course
之间的任何循环依赖关系。
注意:为了使数据库更友好,您可能需要记录ID和研究外键