Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con Static

Estas en el tema de Problema con Static en el foro de C/C++ en Foros del Web. Hola. Estoy intentando hacer un juego con varios aviones. Lo que quiero es tener solo 1 instancia avión en memoria , pero que en verdad ...
  #1 (permalink)  
Antiguo 20/05/2011, 10:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 36
Antigüedad: 14 años, 4 meses
Puntos: 0
Pregunta Problema con Static

Hola.

Estoy intentando hacer un juego con varios aviones.
Lo que quiero es tener solo 1 instancia avión en memoria , pero que en verdad son varios aviones.




/****/ avion.h
class avion
{
public:
vector<int> vertices; // esto serán los puntos que forman el avión
void dibujar_avion(); // dibuja el avión en pantalla.
};

class aviones
{
public:
static avion esteavion; // este es el único avión que existe en memoria.
int vida, velocidad, X, Y , Z;
void mover(float x,float y,float x)
void dibujaresteavion();
}



/******/ avion.c

void dibujaresteavion
{
mover(x,y,z);
esteavion.dibujar_avion(); //¿xq no reconoce esteavion?
//error undefined to aviones::esteavion
}
  #2 (permalink)  
Antiguo 20/05/2011, 10:28
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 12 años, 10 meses
Puntos: 344
Respuesta: Problema con Static

El método dibujaresteavion, supongo que es de la clase aviones.

Entonces tienes que definir la función así:

Código C++:
Ver original
  1. void aviones::dibujaresteavion
  2. {
  3. mover(x,y,z);
  4. esteavion.dibujar_avion();
  5. }
  #3 (permalink)  
Antiguo 20/05/2011, 11:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 36
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problema con Static

Lo escribí mal al ponerlo en el hilo.

Pero en el codigo esta bien.

void aviones::dibujaresteavion

con lo cual el error sigue sin solucionarse.

Gracias de todas formas.
  #4 (permalink)  
Antiguo 20/05/2011, 11:18
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 12 años, 10 meses
Puntos: 344
Respuesta: Problema con Static

Prueba a llamarlo así:

Código C++:
Ver original
  1. void aviones::dibujaresteavion()
  2. {
  3. mover(x,y,z);
  4. aviones.esteavion.dibujar_avion();
  5. }

Ah, no se si será otro error de pegar, pero por si acaso: pon ; al final de la clase aviones
  #5 (permalink)  
Antiguo 21/05/2011, 08:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 36
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problema con Static

Bueno ahora que tengo el código delante lo pego:

objetos.h

class _car: public _triangles_object3D
{
public:

_car();
//void draw(int puntos,int caras,int ajedrez);
void drawC(_tipoDibujo Draw_type,int Punto);

protected:
_cube Cube;
_wheel rueda;
_cone Light;
};

class turismo
{
public:

turismo();
void colocar(float x, float y, float z, float s);
void Pintar(_tipoDibujo Draw_type,int Punto);

_car cocheunico;
static int aaax;
static _car coche2;

//_car *miturismo;
int x, y ,z;
float escala;
int gasolina;
_vertex3f Posicion;
};

objetos.cc

turismo::turismo()
{

}

void turismo::colocar(float x, float y, float z, float s)
{
Posicion.x=x;
Posicion.y=y;
Posicion.z=z;
escala=s;
}

void turismo::Pintar(_tipoDibujo Draw_type,int Punto)
{
glPushMatrix();
glTranslatef(Posicion.x,Posicion.y,Posicion.z);
//glScalef(escala, escala, escala);
aaax=6;
coche2.drawC(Draw_type,Punto);
cocheunico.drawC(Draw_type,Punto);
glPopMatrix();
}

El error lo da en coche2.drawC(Draw_type,Punto);

objetos.o: In function `turismo::Pintar(_tipoDibujo, int)':
/home/tawky/objetos.cc:825: undefined reference to `turismo::coche2'
collect2: ld returned 1 exit status
  #6 (permalink)  
Antiguo 26/05/2011, 03:41
 
Fecha de Ingreso: noviembre-2009
Mensajes: 36
Antigüedad: 14 años, 4 meses
Puntos: 0
[AYUDA POR FAVOR] Problema con Static

Hola no consigo hacer funcionar el programa, agradecería mucho que me ayudaseis.

El código actualmente lo tengo así.

En objetos.h

class turismo
{
public:
turismo();
void colocar(float x, float y, float z, float s);
void Pintar(_tipoDibujo Draw_type,int Punto);
static _car coche2;
_car coche1;
int x, y ,z;
float escala;
int gasolina;
_vertex3f Posicion;
};

En objetos.cc

_car turismo::coche2;


void turismo::Pintar(_tipoDibujo Draw_type,int Punto)
{
glPushMatrix();
glTranslatef(Posicion.x,Posicion.y,Posicion.z);
coche2.drawC(Draw_type,Punto);
glPopMatrix();
}

Así me compila y ejecuta. Pero me esta creando por cada objeto turismo 1 objeto coche mas el coche estático.

Pero si quito la declaración de _car coche1 dentro de la declaración de la clase turismo , en ejecución me da error por violación de segmento.

¿Alguna ocurrencia?


PS: si me dais un correo, os puedo mandar el código completo.

Etiquetas: static
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:55.