システムプログラミングの宿題をやっています。私は大学を実装する必要があります。子クラスの ComputerScience コース クラス、PG コース クラス、および選択コース クラスを含む Course クラスがあります。
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 などのように void ではありません) では、どのタイプのコースかを把握するために dynamic_cast を実行するだけです。
私はこの問題を抱えています:
courseVector は次のとおりです。
std::vector<Course*> coursesVector
dp 変数は、CS、PG、または選択科目のいずれかを含む文字列です。主に、私はこれを行います:
if (dp == "CS")
{
CSCourse *csCourse = new CSCourse(dp, name, semester, minGrade);
coursesVector.push_back(csCourse);
}
「抽象型CSコースのオブジェクトを割り当てられません」と表示されます。PG と Elective についても同じことが言えます。
しかし、私のクラスの定義では、CS コースは抽象的ではありません。