2

Estoy intentando agregar de un clase Libro a otra clase Biblioteca pero no se como hacerlo Esto lo coloque en la clase Biblioteca

int Biblioteca::calcularTotalEjemplares(){
    Libro **libro;
    cout<<"Ingrese Cantidad Total de Libros"<<endl;

    cin>>maxLibros;
    libro = new Libro *[maxLibros];
    for(int i =0; i<maxLibros;i++){
        libro[i]->leer();
    } 

    return Total;
}

Y en la clase Libro hereda de Volumen y tengo una opción para leer que llama a la clase Volumen donde pediré el nombre del libro

void Libro::leer(){
    Volumen::leer();
}

En la clase Volumen tengo esto pero a la hora de copilar deja de funcionar el programa

void Volumen::leer(){
    cout<<"Nombre"<<endl;
    cin.getline(nombre,50);
    cout<<"Numero de Volumen"<<endl;
    cin>>numVolumen;
}
ajosue98
  • 33
  • 5

2 Answers2

0

Para incluir una clase en otra clase, simplemente debes definirla dentro:

class Biblioteca
{
    class Libro
    {
    };
};

Esto se conoce como clase anidada y creo que no es lo que quieres.


Por la nomenclatura y diseño de tu código, creo adivinar que lo que quieres es una Biblioteca a la que le puedas añadir Libros, para ello tendrás que proveer a la biblioteca de un contenedor de Libros:

class Biblioteca
{
    std::list<Libro> libros;
public:
    void anyadirLibro();
    int calcularTotalEjemplares() const;
};

void Biblioteca::anyadirLibro()
{
    Libro l;
    l.leer();
    libros.push_back(l);
}

int Biblioteca::calcularTotalEjemplares() const
{
    retorn libros.size();
}

No necesitas nada más.

PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
0

Conseguí el error en la clase Biblioteca, se me olvido que hay que llamar al constructor antes de comenzar a pedir la información al usuario de la siguiente forma quedaría el código:

int Biblioteca::calcularTotalEjemplares(){
    Libro **libro;
    cout<<"Ingrese Cantidad Total de Libros"<<endl;

    cin>>maxLibros;
    libro = new Libro *[maxLibros];
    for(int i =0; i<maxLibros;i++){
        libro[i] = new Libro(); //<---- Aqui esta la solucion
        libro[i]->leer();
    } 

    return Total;
}

Muchas Gracias por sus respuestas y espero ayudar alguien mas que tuviera la misma duda.

ajosue98
  • 33
  • 5
  • No entiendo, si cada elemento de libro[] es un sólo Libro, para qué es la variable libro un Libro**(como una matriz de libros)? Y no veo Total por ninguna parte, supongo que el código está resumido. – CarlosHD Sep 18 '19 at 19:32