1 Nov 2011 15:42
Re: extern struct
Agustín,
fijáte de resumir un poco más el problema.
A ver si yo te entiendo:
tenés un objeto global, y no le da bola al extern, entonces
el compilador cree que son dos instancias distintas? (llamando al ctor para cada una) ?
--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?
-- 2011/10/28 Agustin <agu699-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Hola, soy nuevo en C++ y estoy tratando de utilizar una variable tipo
struct compartida entre dos clases y tengo un comportamiento no
esperado por mi (o por lo menos por la experiencia que tengo en mi
lenguaje natal c#)
La aplicación es compleja pero lo resumo en un ejemplo simple
int _tmain(int argc, _TCHAR* argv[])
{
claseA a ;
a.SetVariable();
claseB b;
b.SetVariable();
return 0;
}
Defino las clases A y B
---------------ClaseA-------------------------------------
bool variableA;
struct my_struct_t
{
bool bVar;
my_struct_t()
{
bVar = false;
}
}my_struct;
void claseA::SetVariable()
{
variableA =true;
my_struct.bVar = true;
}
-----------------------------ClaseB---------------------------
extern bool variableA;
struct my_struct_t
{
bool bVar;
my_struct_t()
{
bVar = false;
}
};
extern my_struct_t my_struct;
void claseB::SetVariable()
{
variableA =false;
my_struct.bVar = false;
}
-------------------------------------------------------------
Obviamente cuando llamo al método claseB::SetVariable el valor de
my_struct.bVar deberia ser true.
Pero resulta que por alguna razon que desconozco, se ejecuta el
constructor de my_struct_t de la claseB. Pero en esta simple prueba de
escritorio se ve que no es asi. Que puede llegar a provocar este
comportamiento?
Saludos
Garcias por su ayuda.
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
RSS Feed