[英]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.