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

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

概述我正在做系统编程的功课. 我必须实施一所大学. 我有一门课程,有儿童班ComputerScience课程班,PG课程班和选修课程班. class Course{public: virtual void teach(); virtual void reg(Student &s)=0; std::string getName(); std::string getDe 我正在做系统编程的功课.
我必须实施一所大学.
我有一门课程,有儿童班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中提供实现.

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

总结

以上是内存溢出为你收集整理的不能分配抽象类型的对象 – 但是类不是抽象的! (C )全部内容,希望文章能够帮你解决不能分配抽象类型的对象 – 但是类不是抽象的! (C )所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存