Error está aquí:

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

Abuelo clase:

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

Clase principal:

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

Real/niño de la clase:

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

Sé que es un tiro largo, de los que no puedo escribir todo el código aquí…

  • Esto no va a hacer post código real, y, en particular, los lugares donde se declaran las funciones virtuales puras (buscar = 0;).
  • los constructores son completamente irrelevantes, que debería haber publicado las declaraciones
InformationsquelleAutor Itzik984 | 2011-09-08

2 Comentarios

  1. 77

    En C++, una clase con al menos una la función virtual pura se llama clase abstracta. No se pueden crear objetos de esa clase, pero sólo puede tener punteros o referencias a ella.

    Si va a derivar de una clase abstracta, a continuación, asegúrese de reemplazar y definir todas las funciones virtuales puras para su clase.

    De su fragmento de Su clase AliceUniversity parece ser una clase abstracta. Se debe reemplazar y definir todas las funciones virtuales puras de las clases Graduate y UniversityGraduate.

    Las funciones virtuales puras son las que tienen = 0; al final de la declaración.

    Ejemplo: virtual void doSomething() = 0;

    Para una respuesta específica, deberá publicar la definición de la clase para la cual se produce el error y las clases de la que la clase derivada.

    • //No se pueden crear objetos de esa clase, pero sólo puede tener punteros o referencias a ella.// Es eso correcto?
    • Eso es correcto.
  2. 15

    Usted debe tener alguna función virtual declarado en una de las clases para los padres y nunca se llevó a cabo en cualquiera de las clases hijas. Asegúrese de que todas las funciones virtuales son implementados en algún lugar en el inheritence de la cadena. Si una clase es la definición incluye una función virtual pura que nunca se implementó, una instancia de esa clase no puede ser jamás construido.

Dejar respuesta

Please enter your comment!
Please enter your name here