Re: variables globales.



Le jeudi 23 juin 2005 à 13:21 -0400, Claudio Saavedra a écrit :
> On Thu, 2005-06-23 at 13:12 -0400, Germán Poó Caamaño wrote:
> > Le jeudi 23 juin 2005 à 13:07 -0400, Alejandro Valdes J. a écrit :
> > > Estimados.
> > > 
> > > ¿como puedo hacer para dejar de utilizar una variable global?, si tengo
> > > la siguiente situacion:
> > > 
> > > gdouble n_var;
> > > 
> > > funcionX(){
> > > 
> > > 	n_var = gtk_spin_button_get_value (spin);
> > > 	
> > > 	/* evalua cada elemento del modelo */
> > > 	gtk_tree_model_foreach (model,funcionY,una_estructura);
> > > }
> > > 
> > > funcionY(model,path,iter,una_estructura){
> > > 	
> > > 	/* se utiliza la  variable n_var para filtar algunos valores */
> > > 	....
> > > 	
> > > }
> > > 
> > > lo podria solucionar obteniendo el valor del spin cada ves en la
> > > funcionY(), pero no es optimo.
> > 
> > Definela como static.
> > 
> > static gdouble _var;
> > 
> > De esta forma, esa variable sólo existirá dentro del módulo
> > (archivo.c/.o).  Es lo que se emplea cuando tienes variables que
> > no quieres que sean gloables, pero quieres que dos o más
> > funciones la compartan.
> 
> IIRC, así no puedes asegurar que dos instancias concurrentes del objeto
> no compartan el valor, que es el mayor problema de usar una variable
> global acá. Supongo que Alejandro necesita una instancia de esa variable
> per instancia del módulo.

Una variable static no es global.  Si las funciones que Alejandro
la utilizan instancias de un objeto, entonces, mejor es 
definirlas como métodos de un objeto y n_var como un atributo.

Aunque en ninguna parte se indica que habrán varios objetos accediendo
a las funciones, a menos que me haya perdido de algo.

-- 
Germán Poó Caamaño
http://www.ubiobio.cl/~gpoo/




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]