簡體   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