Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/03/2011, 13:48
Avatar de drilisheros
drilisheros
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Como pasar clases como parametros de funcion?

Emm si tienes razon, pero tengo otra duda, estoy usando SDL y C++ por primera vez y ando un poco perdido, esto es un ejemplo de lo que tengo.

Una clase que actua como director esta cambia de escena y ejecuta sus eventos, actualiza y dibuja digamos que es la que maneja todo:
Código C++:
Ver original
  1. class Director{
  2. public:
  3.   int Inicializar(){
  4.     codigo...}  
  5.   void Bucle(){
  6.     while...
  7.     codigo....
  8.     escena.Eventos();
  9.     escena.Actualizar();
  10.     escena.Dibujar(pantalla);
  11.     codigo...}
  12.   int CambiarEscena(Escena escenat){
  13.     Escena escena;
  14.     escena = escenat;
  15.     escena.Inicializar();}
  16.   void Quit(){
  17.     codigo...}
  18. };
Tambien tengo una clase Escena que la uso como "modelo" para crear escenas todas las demas escenas herendan(no se si se diga asi) de esta:
Código C++:
Ver original
  1. class Escena{
  2.  
  3. public:
  4.   bool Inicializar(){}
  5.   void Eventos(){}
  6.   void Actualizar(){}
  7.   int Dibujar(SDL_Surface *pantalla){}
  8. };
Todas las escenas tienen la misma estructura.

Entonces en el main lo que hago es esto:
Código C++:
Ver original
  1. int main (int argc, char * argv []){
  2.   Director Dir;
  3.   EscenaIntro EsIn;
  4.  
  5.   Dir.Inicializar();
  6.   Dir.CambiarEscena(EsIn);
  7.   Dir.Bucle();
  8. }

Ahora el problema es que no me da error alguno todo me lo compila y ejecuta bien, pero por alguna extraña razon no ejecuta las funciones Eventos Actualizar y Dibujar de la EscenaIntro por que el bucle funciona, se repite y repite como cualquier bucle normal xD, pero no ejecuta las funciones de la escena, entonces si pongo el bucle y todo en el main sin pasar por el director todo funciona perfectamente.

Bueno espero me hallan entendido y me puedan ayudar.

Gracias por adelantado