加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:32:28 所属栏目:百科 来源:网络整理
导读:我正在做系统编程的功课. 我必须实施一所大学. 我有一门课程,有儿童班ComputerScience课程班,PG课程班和选修课程班. class Course{public: virtual void teach(); virtual void reg(Student s)=0; std::string getName(); std::string getDepartment(); int
我正在做系统编程的功课.
我必须实施一所大学.
我有一门课程,有儿童班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类的函数中(它们不是无效的,比如getSemester等等).我只是做dynamic_cast来计算它的类型.

我有这个问题:

courseVector是:

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和Elective也一样!

但是,在我对hte课程的定义中,CS课程并不是抽象的!

解决方法

CSCourse类是抽象的.

您已在课程中声明了纯虚函数注册,但未在CSCourse中提供实现.

你的编译器无疑也告诉了你这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读