C ++中类原型的问题

时间:2018-11-19 16:17:55

标签: c++ class object prototype

基本上我的代码有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
};

仍然无效。是的,我确实需要这些类来保存彼此的对象。请告诉我这也可以按照我想要的方式工作,并且我不必更改代码。非常感谢您的帮助。谢谢。

2 个答案:

答案 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 |
+---------+----------+  

此架构允许您的TeacherCourse类是独立的。 关系Teacher_Course类建模。

因此消除了TeacherCourse之间的任何循环依赖关系。

注意:为了使数据库更友好,您可能需要记录ID和研究外键