[英]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 |
+---------+----------+
此架构允许您的Teacher
和Course
类是独立的。 该关系由Teacher_Course
类建模。
这样就消除了Teacher
与Course
之间的任何循环依赖。
注意:为使数据库更友好,您可能需要记录ID和研究外键
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.