Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema Con Una Variable

Iniciado por AGONY, 09 de Febrero de 2005, 10:01:41 AM

« anterior - próximo »

AGONY

 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   ;)  

samsaga2

 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.

_Grey

 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.

sés

 
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]
Soy indeciso... ¿o no?

AGONY

 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...

CoLSoN2

 
Citar
A lo mejor deberia de estructurarlo de otra forma...
para empezar, deja de usar variables globales.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

AGONY

 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.  <_<  

DraKKaR

 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.

AGONY

 Es verdad, no se me habia ocurrido antes. Gracias Drakkar.  (ole)  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.