注意:这是作业!
我目前正在做一个大型项目,其中我有 3 个(我们将重点关注)类,一个基类 Student,以及 2 个派生类 Grad 和 Undergrad,现在我永远不会明确使用学生类,但我将创建一个包含毕业生和本科生类型转换给学生的链接列表,我的问题是我如何实现与派生类的级联,即
在我的基类中,我有一个小函数,在 Undergrad 中完全覆盖了实现
基类:
virtual UnderGrad& setMajor(std::string) {}
本科:
//purpose: sets the major
UnderGrad& UnderGrad::setMajor(std::string maj)
{
major = maj;
return *this;
}
我想知道这是否正确或函数的正确实现是什么,所以我可以使用级联,例如
curStudent.setStudentNum().setMajor()......
我在做什么正确?如果是这样,我的基类应该返回什么?IE
return *(new Undergrad(....));
编辑 要回答一些问题,我只需要一个包含两个类 Grad 和 UnderGrad 的链表,它们都是派生形式的学生,为了对这些列表进行排序,除此之外,我需要访问派生类(唯一变量)但是我有他们强制转换为学生(根据作业的要求),因此为了访问任何班级特定的数据,我需要编写一些虚拟方法来访问它(是的,在我看来这似乎没用,我可以在一个班级的学生中做所有我能做到的事情在这 3 个中,但我不能有 1 个类),因此我编写虚拟方法以专门用于派生类以访问否则会“超出我的能力范围”的变量,这会是错误的吗?接下来,Undergrad 的构造函数确实设置了专业,但是如果我想编辑任何数据,让所有旧数据删除旧节点似乎是多余的,然后用旧数据和新专业创建一个新节点
克里斯在下面的评论中的回答我认为我需要什么