Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ccomplica en 29 Octubre 2013, 22:52 pm



Título: Problema structs
Publicado por: Ccomplica en 29 Octubre 2013, 22:52 pm
Código
  1. struct _directorio{
  2.    Cadena nomDir;
  3.    _directorio *ptrIZQ;
  4.    _directorio *ptrDER;
  5.    _archivo *ptrArchivo;
  6. };
  7. typedef _directorio *Directorio;

Código
  1. struct _sistema{
  2.    _directorio *ptrDirectorio;
  3. };
  4. typedef _sistema *Sistema;

Código
  1. typedef struct _archivo{
  2. Cadena Contenido;
  3. Cadena Atributos;
  4. Cadena nombreArchivo;
  5.  _archivo *siguiente;
  6. };
  7. typedef _archivo *Archivo;

Código
  1. struct _listaArchivos{
  2.    Cadena nomArchivo;
  3.    _listaArchivos *Siguiente;
  4. };
  5. typedef _listaArchivos *ListaArchivos;

Cada una de estas estructuras son la estructura de varios headers en los que tengo definidas funciones varias, con el proposito de crear algo similiar a un Filesystem... o sea tiro comando parametro.. y manipulo el filesystem, creo, elimino y modifico directorios, archivos, etc....
Quiero saber donde esta mi error al definir todos ellos, porque me tira errores de tipo:

"ISO C++ forbids declaration of `archivo' with no type" (en el header de directorio)

o tambien "error: `Archivo' does not name a type" (en el header de listaArchivo)

... Supongo que podria ser un problema de definicion, o de incluir que header en que header... Pero no me doy cuenta. Si no me doy a entender bien haganmelo saber.

Desde ya muchas gracias.-


Título: Re: Problema structs
Publicado por: edr89 en 30 Octubre 2013, 05:53 am
creo que primero debes crear el tipo de dato _directorio y despues hacer referencia al dato creado:
Código
  1. typedef struct _directorio _Directorio
  2. typedef _Directorio *DPTR

En la primera estructura intenta algo asi:
Código
  1.    typedef struct _directorio{
  2.       Cadena nomDir;
  3.       _directorio *ptrIZQ;
  4.       _directorio *ptrDER;
  5.       _archivo *ptrArchivo;
  6.    }_Directorio;

para la segunda estructura:
Código
  1.    struct _sistema{
  2.       _directorio *ptrDirectorio;
  3.    };
  4.    typedef struct _sistema *Sistema;

cuando utlices typedef para crear el tipo de estructura agrega la palabra reservada struct.

Código
  1.    typedef struct _archivo{
  2.    Cadena Contenido;
  3.    Cadena Atributos;
  4.    Cadena nombreArchivo;
  5.     _archivo *siguiente;
  6.    }_Archivo;
  7.    typedef _Archivo *Archivo;
Código
  1.    struct _listaArchivos{
  2.       Cadena nomArchivo;
  3.       _listaArchivos *Siguiente;
  4.    };
  5.    typedef struct _listaArchivos *ListaArchivos;

creo que cuando usas typedef solamente te refieres al tag de la estructura pero no al tipo de dato en si.

Si estoy mal favor de corregir!  :¬¬