SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: lalo_soft en Domingo 13 de Agosto de 2006, 03:53

Título: Crear Objetos Globales
Publicado por: lalo_soft en Domingo 13 de Agosto de 2006, 03:53
como se pueden crear objetos globales en C++


class Myclass()
{
 
 Funcion1();
 bla...
 bla...
}

Myclass::Myclass()
{
  //aqui constructor

}

Myclass::Funcion1()
{

 bla..bla..
}

main()
{

bla..bla..

 
}

la idea es crear el objeto de la clase Myclass fuera de main() (en forma global para ser usada en otra parte del programa).

Saludos
Título: Re: Crear Objetos Globales
Publicado por: lalo_soft en Domingo 13 de Agosto de 2006, 05:20
Ya di como hacerlo!!!  :D  :D  :D  :comp:
Título: Re: Crear Objetos Globales
Publicado por: Geo en Domingo 13 de Agosto de 2006, 06:21
Cita de: "lalo_soft"
Ya di como hacerlo!!!  :D  :D  :D  :comp:
Jeje, pues pon el código :P.

Dos formas:

Código: Text
  1.  
  2. class Objeto {
  3.   public:
  4.     void funcion();
  5. } miObjetoGlobal;
  6.  
  7. Foo otroObjetoGlobal;
  8.  
  9. int main() {
  10.   miObjetoGlobal.funcion();
  11.   otroObjetoGlobal.funcion();
  12. }
  13.  
  14.  

Saludos,
JJ (Geo).
Título: Re: Crear Objetos Globales
Publicado por: lalo_soft en Domingo 13 de Agosto de 2006, 08:25
Cita de: "Geo"
Cita de: "lalo_soft"
Ya di como hacerlo!!!  :D  :D  :D  :comp:
Jeje, pues pon el código :P.

Dos formas:

Código: Text
  1.  
  2. class Objeto {
  3.   public:
  4.     void funcion();
  5. } miObjetoGlobal;
  6.  
  7. Foo otroObjetoGlobal;
  8.  
  9. int main() {
  10.   miObjetoGlobal.funcion();
  11.   otroObjetoGlobal.funcion();
  12. }
  13.  
  14.  

Saludos,
JJ (Geo).

Asi lo hice, el unico problema que detecte al declarar como global es que no se invocan los construtores.
Título: Re: Crear Objetos Globales
Publicado por: Eternal Idol en Domingo 13 de Agosto de 2006, 08:35
NO te recomiendo usar objetos globales, ya vas viendo los problemas que podes tener (no se que compilador usaras pero el VC++ llama a los constructores y destructores) y tenes otros como la imposibilidad de saber el order de inicializacion (si un objeto global llama a otro no inicializado puede tener un estado inutil en el mejor de los casos).
Título: Re: Crear Objetos Globales
Publicado por: lalo_soft en Domingo 13 de Agosto de 2006, 09:30
El programa final correra en un microcontolador ARM y el compilador que uso es de la marca IAR y que es para estos micros ,asi que tuve que ingeniarmelas para accesar a los constructores  :comp:  :comp:  con los objetos declarados como global.
Título: Re: Crear Objetos Globales
Publicado por: Eternal Idol en Domingo 13 de Agosto de 2006, 11:18
Ya veo y como te decia mejor no usar objetos globales  (no te olvides de llamar a los destructores si no son llamados por el compilador).
Título: Re: Crear Objetos Globales
Publicado por: Geo en Domingo 13 de Agosto de 2006, 18:18
Cita de: "lalo_soft"
Asi lo hice, el unico problema que detecte al declarar como global es que no se invocan los construtores.
Eso ya depende del compilador, con g++ si se llama a los constructores :).

Código: Text
  1.  
  2. #include <iostream>
  3. using std::cout;
  4. using std::endl;
  5.  
  6. class Objeto {
  7.   public:
  8.     Objeto() { cout << "Constructor de Objeto" << endl; }
  9.     ~Objeto() { cout << "Destructor de Objeto" << endl; }
  10. };
  11.  
  12. Objeto miObjetoGlobal;
  13.  
  14. int main() {
  15.   cout << "Inicio de main()" << endl;
  16.  
  17.   cout << "Fin de main()" << endl;
  18.  
  19.   return 0;
  20. }
  21.  
  22.  

Salida:
Citar
Constructor de Objeto
Inicio de main()
Fin de main()
Destructor de Objeto

Saludos,
JJ (Geo).
Título: Re: Crear Objetos Globales
Publicado por: lalo_soft en Lunes 14 de Agosto de 2006, 19:27
g++ ???? :blink:
Título: Re: Crear Objetos Globales
Publicado por: shakka en Lunes 14 de Agosto de 2006, 19:55
Compilador de C++ para ambiente *ix.

Mejor dicho GNU Compiler Collection (http://es.wikipedia.org/wiki/GCC)