gpt4 book ai didi

c++ - 不能分配抽象类型的对象 - 但类不是抽象的! (C++)

转载 作者:太空狗 更新时间:2023-10-29 19:44:09 26 4
gpt4 key购买 nike

我正在做系统编程作业。我必须实现一所大学。我有一个 Course 类,有子类 ComputerScience 类(class)类、PG 类(class)类和选修课类。

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类(class)和选修课子类相同)在 Course 类的函数中(它们不是空的,比如 getSemester 等..)我只是做 dynamic_cast 来确定它是什么类型的类(class)。

我遇到了这个问题:

coursesVector 是:

std::vector<Course*> coursesVector

dp 变量是包含 CS、PG 或 Elective 的字符串。主要是,我这样做:

if (dp == "CS")
{
CSCourse *csCourse = new CSCourse(dp, name, semester, minGrade);
coursesVector.push_back(csCourse);
}

它给我“无法分配抽象类型 CS 类(class)的对象”。PG 和选修课也是如此!

但是,在我对hte class的定义中,CS类(class)并不是抽象的!

最佳答案

CSCourse抽象的。

您在 Course 中声明了一个纯虚函数 reg,但未在 CSCourse 中提供实现。

毫无疑问,您的编译器也准确地告诉了您这一点。

关于c++ - 不能分配抽象类型的对象 - 但类不是抽象的! (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com