2017-04-26 23 views
0

**以下は私のヘッダファイルです。私のmain.cppファイルでは、私はStudentの3つのインスタンスを作成し、それをCourseオブジェクトに追加する必要があります。これはどうですか?私は教科書やオンラインで答えを見つけることができない。次に、少なくとも1つの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(); 

}私はこの場合には、以下の

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; 
}; 

にデザインを変更します

+2

"CourseオブジェクトにStudentのインスタンスを追加する"とは、 "StudentクラスがCourseクラスから継承する"こととはまったく異なることを意味します。おそらく、あなたの好きなC++の本でクラスとそのインスタンスの紹介をもう一度読むべきでしょう。 – molbdnilo

+0

"私は3つの生徒のインスタンスを作成し、コースオブジェクトに追加する必要があります。" - あなたのCourseインスタンスにはコンテナ(std :: vector、std :: list、something)があり、Courseクラスにはおそらく "push_back(Student *)..."というメソッドがありますクラス.... –

+0

質問は "クラスのインスタンスを追加するにはどうすればいいですか?"というクラスを追加するのと同じではありません。インスタンスとタイプ –

答えて

1

それは意味的に意味がないよう、ごStudentTeacherは、Courseのタイプではありません。むしろCourseは、学生と教師の集約です。子孫クラスのインスタンスを作成する

+0

割り当ての階層では、教師と学生オブジェクトはCourseオブジェクトの子です! –

+2

@JessicaLermanあなたのインストラクターによって与えられたこれらのクラス継承はありましたか?それは本当に貧しいデザインだと私は思っています – CoryKramer

+1

@JessicaLermanこれはhas-a関係(コースは教師と学生がいます)この答えに示されているのは道のりです。継承はis-a関係のための良い設計選択です(学生はコースは本当に意味をなさないのですか?) –

0

ジェシカ、 私は別のクラスのオブジェクトに一つのクラスのインスタンスを追加する」との論理的な差があることmolbdniloに同意する必要があります...対...。

あなたの声明のシーケンスがオフであるか、私は何がわからないのですか?

あなたが実際にしなければならないことは、「スチューデント」クラスと「スチューデント」クラスを含む「コース」クラスを持つことです。 「教師」クラスのインスタンスを作成し、「コース」クラスの論理インスタンス内に存在するようにします。たとえば、「化学」という「コース」クラスのインスタンスを作成し、その場合、 "萌え"、 "ジョー"、 "フロート"の3人の生徒を作ります。 Chemistryのインスタンスでは、Teacherクラスを使用して "Willie the Chemist"という名前の先生を作成します。

この時点で、CourseクラスのChemistryインスタンスには、3つの学生クラスインスタンスと1つの教師クラスインスタンスが含まれます。

この時点で、これは私の一部に野生の推測です。

「コース」クラス定義を提供する場合は、非常に役に立ちます。

"Student"と "Teacher"クラスの定義はどこから取得しましたか?

は「コース」クラス定義と一緒に完全な質問や情報を提供します。他の人が助けてくれるかもしれない。 Dr t

+0

継承図には、コースから生徒への行と開いたダイアモンドで終わる行が示されています。また、最後に開かれたダイヤモンドが付いたコースから教師までのライン。 –

0

私は、クラスの学生もクラスの教師もクラスのコースを継承してはいけないと思います。

クラスコースは、生徒と教師のためのコンテナです。

教師クラスと教師クラスは、例えば抽象クラスPersonを継承することができます。クラスのコースについては

それは内部的に例std::vector<Person *>用として、いくつかの標準コンテナを使用することができますし、あなたがクラスのoperator +=に過負荷をかけたり、それが何をするか、すべてが新しいをプッシュするであることをenrollまたはaddのような名前の関数を定義することができます

関連する問題