我正在做系统编程作业。我必须实施一所大学。我有一个 Course 课程,有子课程 ComputerScience 课程课程、PG 课程课程和选修课程课程。
class Course
{
public:
virtual void teach();
virtual void reg(Student &s)=0;
std::string getName();
std::string getDepartment();
int getSemester();
int getMinGrade();
void addStudent(Student *s);
void removeStudent(Student *s);
protected:
std::string _department;
std::string _name;
int _semester;
int _minGrade;
std::vector<Student*> studentsList;
};
class CSCourse : public Course
{
public:
CSCourse();
CSCourse(std::string department, std::string name, int semester, int mingrade);
~CSCourse();
std::string getName();
std::string getDepartment();
int getSemester();
int getMinGrade();
void addStudent(Student *s);
void removeStudent(Student *s);
};
(PG课程和选修课子类是一样的)在Course类的函数中(不是void,比如getSemester等)我只是做dynamic_cast来确定它是什么类型的课程。
我有这个问题:
课程向量是:
std::vector<Course*> coursesVector
dp 变量是一个包含 CS、PG 或 Elective 的字符串。总的来说,我这样做:
if (dp == "CS")
{
CSCourse *csCourse = new CSCourse(dp, name, semester, minGrade);
coursesVector.push_back(csCourse);
}
它给了我“无法分配抽象类型 CS 课程的对象”。PG和选修课也是如此!
但是,在我对 hte 课程的定义中,CS 课程并不是抽象的!