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

pepe lui listas.pepe en gmail.com
Jue Mayo 3 21:15:54 CEST 2007


Hola Steven.

> Si no existe este diseño; es decir, no tenemos acceso al objeto de la clase 'logueo', entonces tenemos que analizar lo que queremos hacer. Si 'print()' no usa ninguna propiedad (dato miembro) de la clase 'logueo', entonces posiblemente podamos definir la función miembro 'print()' como estática. Esto es,
>
> class logueo
> {
>   ...
>   static void print( string msg );
> };
>
> Con esto, podemos invocar 'print()' directamente sin tener un objeto a tal clase. Por ejemplo,
>
>
> class Persona
> {
>   ...
>   void func()
>   {
>     string sMensaje;
>     ...
>     logueo::print( sMensaje );
>   }
> };
>

Al final lo habia resuelto tal cual comentas aca. Mi problema era que
print (este metodo va logueando el estado del programa) accedia a un
archivo o stdout (dependiendo si es posible o no abrir el archivo) y
no habia hecho la declaracion del archivo estatica.
Creo que la mejor solucion para el problema es que "print" sea un
metodo estatico al igual que el atributo/miembro archivo, si hay otra
forma que creen mejor espero sus sugerencias.

Dejo un poco mas explicita la clase Log:

..

class Log {

public:
   static void print(string msg);
   static void error(string msg);

private:
    static FILE *file;
};

En la implementacion solo abro file y print/error hace un "cout" de
msg. Core es quien inicializa esta clase para tener una referencia al
archivo.

Muchas gracias por la respuesta Steven.

Saludos.




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