如何在C ++中添加类?

时间:2017-04-26 18:25:35

标签: c++ class inheritance containers

**下面是我的头文件。在我的main.cpp文件中,我需要创建三个Student实例并将它们添加到Course对象中。这是怎么做到的?我似乎无法在任何教科书或网上找到答案。然后我需要实例化至少一个Teacher对象。然后将该Teacher对象添加到我的Course对象中。

我怎么能做所有这些事情?感谢。**

  #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();

};

3 个答案:

答案 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是学生和教师的聚合

答案 1 :(得分:0)

杰西卡 我必须同意molbdnilo,“将一个类的实例添加到另一个类的对象...与...制作后代类的实例之间存在逻辑差异。

你的陈述序列是关闭的还是 - 我不知道是什么。

我怀疑你真正需要做的是拥有一个“课程”课程,其中包含一个“学生”课程和一个“教师”课程,你要制作这些课程的实例。然后它们将存在于“Course”类的逻辑实例中。例如,您创建一个名为“Chemistry”的“Course”类的实例,然后使用该实例中的Student类创建三个名为“Moe”,“Joe”和“Floe”的学生。然后在化学实例中使用教师课程,让一位名叫“威利化学家”的老师。

此时,Course类的Chemistry实例将“包含”三个学生类实例和一个教师类实例。

此时这是我的一个疯狂猜测。

如果您提供“课程”课程定义,那将非常有用。

您从哪里获得“学生”和“教师”课程定义?

提供完整的问题和信息以及“课程”类定义。那么也许其他人可以帮忙。 博士

答案 2 :(得分:0)

我认为班级学生和班级老师都不应该继承班级课程。

课程课程是学生和教师的容器。

类Student和类Teacher可以继承,例如抽象类Person。

至于课程课程,那么它内部可以使用一些标准容器,例如std::vector<Person *>,您可以为该类重载operator +=或定义名称为enroll的函数或add所做的就是在标准容器上推送新人..