Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: AGONY en 09 de Febrero de 2005, 10:01:41 AM

Título: Problema Con Una Variable
Publicado por: AGONY en 09 de Febrero de 2005, 10:01:41 AM
 Hola a todos,

Pues resulta que tengo en un fichero de cabecera, una clase declarada y al final pues me he declarado un objeto de este tipo, ya que se que solo voy a tener uno en todo el proyecto. Pues el problema lo tengo en eso, pues en todos los sitios que incluya la cabecera me dice que esta declarada(eso es lógico) yo se que se puede hacer de una forma, pero no me acuerdo...lo que si no entiendo es que tengo el objeto y la clase encerrados en un #ifndef - #endif asi y todo me da ese error. Haber si alguien me refresca la memoria   ;)  
Título: Problema Con Una Variable
Publicado por: samsaga2 en 09 de Febrero de 2005, 10:07:22 AM
 Lo de los #ifdef's se pone de forma:


#ifndef NOMBRECLASE
#define NOMBRECLAE

/* Declaracion de la clase */

#endif


Si lo tienes bien puesto como no nos pongas el fichero cabecera dificilmente te vamos a poder ayudar.
Título: Problema Con Una Variable
Publicado por: _Grey en 09 de Febrero de 2005, 10:09:46 AM
 Me extraña que con el #ifndef no te funcione, igual esta mal aplicado.
Te pongo como lo uso por si fuera eso:
QUOTE (fichero.h)
#ifndef FICHERO_H
#define FICHERO_H

...
. Codigo .
...

#endif
[/quote]

Mira que no te hayas dejado el #define.

Saludos.
Título: Problema Con Una Variable
Publicado por: sés en 09 de Febrero de 2005, 10:12:44 AM
 
QUOTE (fichero.h)
#ifndef __FICHERO_H
#define __FICHERO_H

extern mi_tipo mi_variable;

#endif  // __FICHERO_H[/quote]

QUOTE (fichero.c)
#include "fichero.h"
mi_tipo mi_variable = valor;
[/quote]
Título: Problema Con Una Variable
Publicado por: AGONY en 09 de Febrero de 2005, 10:22:32 AM
 Si lo tengo bien, es asi como lo teneis puesto voy a poner como lo tengo


     #ifndef CAMARA_H
     #define CAMARA_H
              class obj.....{
               };
               obj objeto;
      #endif
      --------------------------
      Modulo Ventana
      --------------------------
      #include "camara.h"
      objeto.lo_que_sea(); //Lo uso en este modulo.
       --------------------------
        Modulo Game
        -------------------------
         #include "Ventana.h"
         objeto.lo_que_sea(); //Lo vuelvo a usar aqui tambien.


A lo mejor deberia de estructurarlo de otra forma...
Título: Problema Con Una Variable
Publicado por: CoLSoN2 en 09 de Febrero de 2005, 10:37:54 AM
 
Citar
A lo mejor deberia de estructurarlo de otra forma...
para empezar, deja de usar variables globales.
Título: Problema Con Una Variable
Publicado por: AGONY en 09 de Febrero de 2005, 10:58:18 AM
 Gracias colson por el consejo,
Ya sé que es mejor no usar variables globales, pero lo que queria era no tener que agregar metodos que necesitan de este objeto. En mi caso, solo quiero una camara para todo el proyecto, dandome igual donde la use, y lo que queria era ahorrarme metodos como setCamara(Camara *)... en los objetos que haga uso de ella.  Pero total al final lo he tenido que poner asi temporalmente porque no consigo que me quite el error de que se ha declarado varias veces el objeto.  <_<  
Título: Problema Con Una Variable
Publicado por: DraKKaR en 09 de Febrero de 2005, 11:07:26 AM
 Para eso muchos de opr aquí te aconsejarían un singleton para la cámara, ya que solo puede haber una. También podrías crear la clase cámara con sus funciones miembro de clase (static) de esa forma podrías ejecutarlas desde donde sea sin tener que acceder a una variable:

Camera::GetPos();

Últimamente uso abstante eso de las funciones de clase en mi motor. Embellecen y hacen senclla la forma de usar el motor. Como opr ejemplo para el logger de mi motor:

Logger::LogMessage("Esto va para el LOG!");

Así desde donde quiera guardar un log solo tengo que ejecutar eso, y punto.


De todas formas, has hecho caso del código que te ha dicho ses? Eso debería funcionarte. Nunca dbes declarar una variable en un fichero de cabecera...  las variables se declaran en un CPP, y para hacerlas globales, en un fichero de cabecera se declara como externa y punto.
Título: Problema Con Una Variable
Publicado por: AGONY en 09 de Febrero de 2005, 11:11:36 AM
 Es verdad, no se me habia ocurrido antes. Gracias Drakkar.  (ole)