我正在做一個系統編程作業。 我必須實施一所大學。 我有一門課程,包括ComputerScience課程班,PG課程班和選修課課程。不能分配抽象類型的對象 - 但類不是抽象的! (C++)
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類的功能(這並不作廢,像getSemester和這樣的..)我只是做dynamic_cast的推測什麼類型的課程是嗎。
我有這樣的問題:
coursesVector是:
std::vector<Course*> coursesVector
和DP變量是包含任一CS,PG或選修的字符串。主要的,我這樣做:
if (dp == "CS")
{
CSCourse *csCourse = new CSCourse(dp, name, semester, minGrade);
coursesVector.push_back(csCourse);
}
它給我「不能分配抽象類型CS課程的對象」。 同樣適用於PG和選修課!
但是,在我的hte類定義中,CS課程不是抽象的!
作爲旁註:在基類中創建一個虛擬析構函數。 – gvd