繁体   English   中英

C ++中类原型的问题

[英]Trouble with class prototyping in C++

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

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

适用于您可能想要做的代码:

老师

#include <vector>
using std::vector;
class Course;

class Teacher
{
vector<Course*> courses;
...
};

课程

#include <vector>
using std::vector;
class Teacher;

class Course
{
vector<Teachers*> teachers;
...
};

请注意,在源文件中,您将要包括两个头文件,因为目前, Teacher不知道“ Course的功能,反之亦然。

我使用原始指针来做到这一点,以使您更容易理解,但是您应该在某个时候切换到某种智能指针(在这种情况下,可能是weak_ptr )。

顺便说一句,通常,人们用主要的首字母写类名。

我认为您应该将此视为数据库问题。
我们再来一张包含教师和课程的表:

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和研究外键

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM