错误在这里:

vector<Graduate *> graduates;
graduates.push_back(new AliceUniversity(identifier,id,salary,average));

祖父母班:

Graduate::Graduate(char identifier,
                   long id,
                   int salary,
                   double average)
    : _identifier(identifier),
      _id(id),_salary(salary),
      _average(average)
{
}

父班:

UniversityGraduate::UniversityGraduate(char identifier,
                                       long id,
                                       int salary,
                                       double average)
    : Graduate(identifier,id,salary,average)
{
}

实际/儿童课:

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

我知道这是一个远景,我不能在这里写整个代码…

答案

在C ++中至少一个纯虚拟功能叫做abstract class。您无法创建该类别的对象,但可能只有指针或引用。

如果您是从抽象类派生的,请确保您覆盖并定义了类的所有纯虚拟功能。

从你的片段里你的班级AliceUniversity似乎是一个抽象类。GraduateUniversityGraduate

纯虚拟功能是= 0;在宣言结束时。

例子:virtual void doSomething() = 0;

对于特定的答案,您需要发布获得错误的类别的定义以及该类得出的类的类别。

来自: stackoverflow.com