Ayuda urgente!!

celtic
08 de Agosto del 2004
Hola, estoy intentando hacer un pequeño gestor de bibliotecas en c++ y no consigo compilar el programa.
Dispongo de una clase Autor y una clase libro.:



#include <string>
#include<iostream>
#include "Libro.h"
#include "Lista.h"
using namespace std;
class Autor{
string nombre, apellido, dni;
Lista <Libro> libreria;
public:
Autor(string n, string a, string d): nombre(n),apellido(a),dni(d){}
void mostrar();
};

Y una clase libro, el error de compilacion me surge al declarar autor como miembor de libro
#include "Autor.h"
#include <string>
using namespace std;

class Libro{
Autor autor;
string titulo;
Fecha publicacion;
*****
};
#endif

El error es el siguiente:

: error de sintaxis : falta ';' delante del identificador 'autor'
: error C2501: 'Libro::Autor' : faltan la clase de almacenamiento o los especificadores de tipo
: error C2501: 'Libro::autor' : faltan la clase de almacenamiento o los especificadores de tipo

Si alguien me pudiera ayudar se lo agradeceria..



juanin
08 de Agosto del 2004
bueno, no estoy seguro, pero creo que podria ser porque las dos clases se necesitan mutuamente, y claro, como hay que compilar una primero, pues te suelta el error de que no conoce la otra clase. Lo que hay que hacer es declarar una de las clases antes de entrar con la otra. Es decir, por ejemplo aqui, tendrias que poner algo asi:
#include "Autor.h"
#include <string>
using namespace std;

class Autor;

class Libro{
Autor autor;
string titulo;
Fecha publicacion;

Asi ya le dices que la clase autor existe y que la busque por ahi antes de quejarse