"无法分配抽象类型的对象"错误

Itz*_*984 29 c++ vector pure-virtual data-structures

错误在这里:

vector<Graduate *> graduates;
graduates.push_back(new AliceUniversity(identifier,id,salary,average));
Run Code Online (Sandbox Code Playgroud)

祖父母班:

Graduate::Graduate(char identifier,
                   long id,
                   int salary,
                   double average)
    : _identifier(identifier),
      _id(id),_salary(salary),
      _average(average)
{
}
Run Code Online (Sandbox Code Playgroud)

家长班:

UniversityGraduate::UniversityGraduate(char identifier,
                                       long id,
                                       int salary,
                                       double average)
    : Graduate(identifier,id,salary,average)
{
}
Run Code Online (Sandbox Code Playgroud)

实际/儿童班:

AliceUniversity::AliceUniversity(char identifier,
                                 long id,
                                 int salary,
                                 double average)
    : UniversityGraduate(identifier,id,salary,average)
{
    _graduateNum++;
    _sumOfGrades += average;
    _avrA = getAverage();
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个很长的镜头,我不能在这里写完整个代码......

Alo*_*ave 77

在C++中,具有至少一个纯虚函数的称为抽象类.您不能创建该类的对象,但可能只有指针或对它的引用.

如果要从抽象类派生,那么请确保覆盖并定义类的所有纯虚函数.

从你的代码片段你的类AliceUniversity似乎是一个抽象类.它需要覆盖并定义类的所有纯虚函数GraduateUniversityGraduate.

纯虚函数是= 0;声明结束时的函数.

例: virtual void doSomething() = 0;

对于特定答案,您需要发布您获得错误的类的定义以及该类派生的类.


Dan*_*iel 15

您必须在其中一个父类中声明一些虚函数,并且永远不会在任何子类中实现.确保所有虚拟函数都在继承链中的某个位置实现.如果类的定义包含从未实现的纯虚函数,则无法构造该类的实例.