2017-04-26 169 views
0

**以下是我的頭文件。在我的main.cpp文件中,我需要製作三個Student實例並將它們添加到Course對象中。這是如何完成的?我似乎無法在任何教科書或在線上找到答案。然後我需要實例化至少一個Teacher對象。然後將該教師對象添加到我的課程對象中。如何在C++中添加類?

我該怎麼做所有這些事情?謝謝。**

#pragma once 


class Student : Course{ 

private: 
    std::string firstName; 
    std::string lastName; 
    int age; 
    std::string address; 
    std::string city; 
    std::string phone; 
public 
    Student()=default; 
    std::string getFirstName(); 
    void setFirstName(std::string name_two); 
    std::string getLastName(); 
    void setLastName(std::string name_two); 
    std::string getAddress(); 
    void setAddress(std::string address); 
    int getAge(); 
    int setAge(age2); 
    void getCity(); 
std::string setCity(city2); 
void getPhone(); 
std::string setPhone(); 
void GradeStudent(); 
std::string SitInClass(); 
~Student(); 

};

 class Teacher : Course{ 


     private: 
std::string firstName; 
std::string lastName; 
int age; 
std::string address; 
std::string city; 
std::string phone; 
    public 
Teacher()=default; 
std::string getFirstName(); 
void setFirstName(std::string name_two); 
std::string getLastName(); 
void setLastName(std::string name_two); 
std::string getAddress(); 
void setAddress(std::string address); 
int getAge(); 
int setAge(age2); 
void getCity(); 
std::string setCity(city2); 
void getPhone(); 
std::string setPhone(); 
void GradeStudent(); 
std::string StInClass(); 
~Teacher(); 

};

+2

「將學生的實例添加到課程對象」意味着完全不同於「讓學生類從課程類繼承」。您應該再次閱讀您最喜愛的C++書籍中的類和它們的實例。 – molbdnilo

+0

「我需要製作三個Student實例並將它們添加到Course對象中。」 - 建議你的課程實例有一個容器(std :: vector,std :: list,something),而Course類有一個方法,可能是「push_back(Student *)...如果你向我們展示了課程class ... –

+0

這個問題也許應該是「如何添加班級學生實例...」,這與添加班級不一樣實例與類型 –

回答

1

我將你的設計更改爲以下

class Student 
{ 
    // member variables and methods 
}; 

class Teacher 
{ 
    // member variables and methods 
}; 

class Course 
{ 
public: 
    void add_student(Student const& student) { students.push_back(student); } 
    // more methods 
private: 
    Teacher teacher; 
    std::vector<Student> students; 
}; 

在這種情況下,您的StudentTeacher是不是一個類型的Course,因爲這是沒有意義的語義。而是Course彙總的學生和老師。

+0

在分配的層次結構中,教師和學生對象是課程對象的孩子! –

+2

@JessicaLerman這些是你的教師給你的類繼承嗎?我認爲這是一個非常糟糕的設計 – CoryKramer

+1

@JessicaLerman因爲這是一個關係(課程有老師和學生)作文在這個答案中顯示的是繼續前進的方式繼承是一種關係的良好設計選擇(學生是一門課並不合理,是嗎?) –

0

傑西卡, 我有molbdnilo同意,還有另一個類的對象......對一個類的實例加入之間的」邏輯差......讓子類的實例。

或者你的陳述序列是關閉的或者 - 我不知道是什麼

我懷疑你實際上需要做的是讓一個「課程」類包含一個「學生」類和一個「教師「課程,然後您將創建這些實例,然後它們將存在於」課程「類的邏輯實例中。例如,您創建一個名爲」化學「的」課程「類實例,然後使用Studen在這種情況下,讓三名學生命名爲「Moe」,「Joe」和「Floe」。然後在化學實例中使用「教師」類來創建一個名爲「Willie the Chemist」的教師。

此時,Course類的Chemistry實例將「包含」三個學生類實例和一個教師類實例。

在這個時候,這是一個瘋狂的猜測。

如果你想提供你的「課程」類定義,它將非常有幫助。

你從哪裏得到「學生」和「教師」類定義?

提供完整的問題和信息以及「課程」類定義。那麼也許別人可以幫忙。 博士

+0

繼承圖片顯示了一條從課程到學生並以空心菱形結束的線。另外還有一條從球場到教師的路線,最後有一顆開放的鑽石。 –

0

我認爲班級學生和班主任都不應該繼承課程。

該課程是學生和教師的容器。

班級學生和班級老師可以繼承例如一個抽象類Person。

至於類課程,然後在內部可以使用一些標準的容器,例如std::vector<Person *>,你可以重載operator +=爲類或定義與像enrolladd名稱的所有它的作用是推動一個新的功能標準容器上的人..