[C con Clase] Instanciar una Clase y accederla desde varias

Pepe listas.pepe en gmail.com
Jue Mayo 3 22:23:18 CEST 2007


> P> Dejo un poco mas explicita la clase Log:
> P> ..
> P> class Log {
> P> public:
> P>    static void print(string msg);
> P>    static void error(string msg);
> P> private:
> P>     static FILE *file;
> P> };
> P> En la implementacion solo abro file y print/error hace un "cout" de
> P> msg. Core es quien inicializa esta clase para tener una referencia al
> P> archivo.
> 
> No soy partidario de diseñar clases estáticas, especialmente bajo C++. Bajo C++, podríamos usar espacios con nombre (namespaces, en inglés) bajo los cuales definimos las entidades que nos interesan. Por ejemplo,
> 
> namespace logueo
> {
> 
> FILE *file;
> void print( string msg );
> void error( string msg );
> 
> }
> 
> El resto de la implementación no debería darnos problemas. Por ejemplo,
> 
> logueo::file = fopen( "datos.log", "a+" );
> 
> 
> De todas maneras, no sé si esto es lo que quieres. Si sólo vas a tener un fichero general para todas las operaciones de la bitácora, entonces sugiero hacer lo anterior. Sin embargo, si quieres tener varias bitácoras abiertas, entonces necesitarás varios objetos de tipo 'logueo' y entonces ya entramos en otro asunto el cual ya traté anteriormente.

Si, solo necesito _una_ instancia de esa clase. Escribe en el archivo
(siempre el mismo) el estado de toda la aplicacion en las diferentes
clases y métodos. En una logueará lo que el usuario tipio y en otra lo
que el programa esté devolviendo, donde la primera es la interfaz con el
usuario y la otra la que realiza los `cálculos` (es por decir un ejemplo).
Algún otro argumento o link que me explique el por qué usar un espacio y
no declararlas estáticas?


> Espero haberte orientado algo mejor.

Si, muchas gracias. Saludos.






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