Problema structs

Iniciado por Ccomplica, 29 Octubre 2013, 22:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Ccomplica

Código (cpp) [Seleccionar]
struct _directorio{
    Cadena nomDir;
    _directorio *ptrIZQ;
    _directorio *ptrDER;
    _archivo *ptrArchivo;
};
typedef _directorio *Directorio;


Código (cpp) [Seleccionar]
struct _sistema{
    _directorio *ptrDirectorio;
};
typedef _sistema *Sistema;


Código (cpp) [Seleccionar]
typedef struct _archivo{
Cadena Contenido;
Cadena Atributos;
Cadena nombreArchivo;
  _archivo *siguiente;
};
typedef _archivo *Archivo;


Código (cpp) [Seleccionar]
struct _listaArchivos{
    Cadena nomArchivo;
    _listaArchivos *Siguiente;
};
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.-

edr89

creo que primero debes crear el tipo de dato _directorio y despues hacer referencia al dato creado:
typedef struct _directorio _Directorio
typedef _Directorio *DPTR


En la primera estructura intenta algo asi:
    typedef struct _directorio{
       Cadena nomDir;
       _directorio *ptrIZQ;
       _directorio *ptrDER;
       _archivo *ptrArchivo;
    }_Directorio;


para la segunda estructura:
    struct _sistema{
       _directorio *ptrDirectorio;
    };
    typedef struct _sistema *Sistema;


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

    typedef struct _archivo{
    Cadena Contenido;
    Cadena Atributos;
    Cadena nombreArchivo;
     _archivo *siguiente;
    }_Archivo;
    typedef _Archivo *Archivo;

    struct _listaArchivos{
       Cadena nomArchivo;
       _listaArchivos *Siguiente;
    };
    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!  :¬¬