33

错误在这里:

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();
}

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

4

2 回答 2

83

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

如果您是从抽象类派生的,请确保为您的类覆盖并定义所有纯虚函数。

从你的片段你的类AliceUniversity似乎是一个抽象类。它需要重写和定义类的所有纯虚函数GraduateUniversityGraduate.

纯虚函数是= 0;声明末尾的那些。

例子:virtual void doSomething() = 0;

对于特定的答案,您需要发布您收到错误的类的定义以及该类所派生的类。

于 2011-09-08T18:25:38.180 回答
17

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

于 2011-09-08T18:25:49.413 回答