[C con Clase] pasar estructuras a un parametro generico del metodo de una clase

Rubén Calabuig racalabuig en gmail.com
Lun Oct 19 14:28:29 CEST 2009


Hola a todos:

Estoy haciendo una clase, "clsArchivo", para instanciar objetos con
archivos binarios asociados.

La clase tiene tres atributos
   FILE* arch;     // puntero a una estructura FILE.
   char* nombre;   // puntero a una cadena generada dinamicamente para
                   // contener el nombre del archivo en disco.
   tEstado estado; // estado actual del archivo

NOTA: tEstado es una enumeracion declarada de la siguiente forma:

enum tEstado{DESASIGNADO,INDETERMINADO,INEXISTENTE,
             CREADO,LEER,AGREGAR,MODIFICAR,CERRADO};


Tods los métodos de acción sobre el archivo asociado, funcionan a la
perfección, pero el problema se plantea cuando intento desarrollar
métodos, que reciban como parámetros a estructuras que deben ser
escritas o leidas.

No puedo pasar un formato específico de estructura, ya que si así lo
hiciera, mi clase no sería generérica. Entonces, pensé en utilizar
punteros de tipo void pero no les encuentro la vuelta, de cualquier
forma que los escriba, me dan error.

Aclaro que estoy programando en el IDE Code::Blocks con el compilador
gcc, tanto para entorno Windows como par Linux.

Un ejemplo de prototipo sería el siguiente:

tEstado clsArchivo::guardarRegistro(void* reg, int tam) 

Donde:
      void* reg --> es el puntero a la estructura.
      int tam   --> es el tamaño de la estructura.

La pregunta concreta es cómo debe ser la función fwrite o fread, yo
intenté lo siguiente:

fread(reg,tam,1,arch)  

Pero me da error.

Desde ya muchas gracias.
 

-- 
Rubén Alberto Calabuig






Más información sobre la lista de distribución Cconclase