[C con Clase] Duda

Gilberto Cuba Ricardo gilberto.cuba en ucp.ho.rimed.cu
Mar Nov 16 01:30:21 CET 2010


Hola Julian,

Julian Salamanca escribió:
> He leído y he encontrado algo referente al tema de la
> serialización, pero no logro entender como aplicar esta a mi problema.

> En conclusión quiero almacenar clases que contienen punteros
> miembro a valores y a otras clases, para luego poder recuperar esta
> información del archivo para su uso en otro proceso.
> Cualquier información me sera de utilidad.

Bueno, la verdad es que nunca lo he hecho, pero se me ocurre a partir
de lo que dice David que tiene que implementarla tu mismo. Es decir,
pues me invento una nueva clase con varios métodos que permitan la
escritura y lectura de los distintos tipos de datos y tal vez un
método para firmar la cabecera de los archivos binarios que vas a
guardar, en lo cual puede ir la versión y cualquier otro tipo de
información que desees agregar, ya que te estás inventando tu
estructura que tendrá ese archivo. Un acercamiento a una idea pudiera
ser:

class serialize
{
  public:
    serializee(...);
    ~serialize();

    void writeHeader(void);
    void writeChar(const char value);
    void writeShort(const short value);
    void writeInt(const int value);
    void writeBool(const bool value);
    void writeString(const string &value);
    ...

    void readHeader(void);
    void readChar(char &var);
    void readShort(short &var);
    void readInt(int &var);
    void readBool(bool &var);
    void readString(string &var);
    ...

  private:
    FILE   *file;
    string version;
    ...
};

Para poder llevar a cabo este proceso, me imagino que necesitas tener
métodos en tus clases, que permitan leer valores que definen el estado
de un objeto, así como introducirle valores que posibiliten definir su
estado también.

Luego te implementas cada uno de los métodos anteriores y otros que
desees, te creas una nueva clase que se llame digamos "CASerializer" y
en esta llevas a cabo la escritura y lectura de los datos de la clase
a serializar, utilizando los métodos que implementaste anteriormente.

No sé si pudiste entender mucho, pero al menos es una idea.

> De antemano muchas gracias por la ayuda.

Espero por lo menos que tengas ya una idea.

-- 
Saludos,
 Gilberto Cuba Ricardo





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