![]() |
Problema Polimorfismo y Array bidimensiona[N][N]
Hola, estoy creando un juego y se me presenta el siguiente problema:
Los escenarios están divididos en Tiles(cuadraditos), para saber si puedo atravesar o no cada tile, tengo un array numérico. He creado una clase padre TEscenario y quiero crear una subclase por cada escenario del juego (Si se os ocurre una idea mejor decídmelo). La clase padre es algo así: Código:
class TEscenario {Código:
class Escenario1: public TEscenario{He pensado que se podría solucionar dándole un límite de tamaño al array, pero no me gustaría darle un tamaño máximo a los escenarios. Si utilizo la subclase directamente, sin el polimorfismo, funciona perfectamente, el problema es que no sé qué escenario tendré cargado y necesito el polimorfismo. Saludos y gracias por las molestias. |
Lo único que se me ocurre es que en lugar de definir en la clase padre una variable de tipo array, definas una función que acepte dos argumentos (fila y columna) y ésta la sobreescribes en las clases hijas, las cuales sí tendrán una variable de tipo array, que sea privada, la cual se utilizará para devolver el valor adecuado de la función.
Ej (en Delphi y escrito ene el Chrome, así que igual cometo faltas): Código:
TEscenario=class{En Delphi existe la posibilidad de usar las property, que puede acceder a una propiedad llamando a métodos de escritura / lectura. No sé si existe en C (creo que sí). Te he mostrado básicamente eso. Espero te sirva de ayuda. Un saludo, LoPiTaL |
Un array de dos simensiones en C/C++ no es ni mas ni menos que un ountero a un puintero, por lo tanto:
Código:
class TEscenario {Código:
Tiles = new char*[Dimension1];Código:
for(int n=0; n<Dimension1; n++) |
Hola a ambos, muchas gracias por vuestras respuestas.
escafandra, esa idea ya la había barajado y la tenía como última opción, ya que me parece muy engorroso tener que pedir la memoria en el constructor e introducir los valores, ya que son unos valores estáticos y definidos para cada subclase. LoPiTaL, :eek: vaya PEDAZO de idea, no se me había ocurrido, pero es exactamente lo que busco: puedo inicializarlo fácilmente y puedo pedir los valores tan simple como Escenario.Tiles(N,N). Muchas gracias a los dos, me habéis dado una alegría >.< |
Cita:
Según lo que entiendo de tu último post, preendes hacer un miembro static de la clase. estos se declaran en la clase (archivo.h) y se inicializan fuera (archivo .cpp) en un lugar donde estemos seguros que se va a ejecutar. Se trataría de hacer algo como esto: Código:
class TEscenario {Creo que es esto lo que preguntas. Saludos. |
Ya lo solucioné, hice esto:
Código:
class TEscenario {Sobre los archivos de cabecera, tengo un lío, se supone que en los .h declaras las variables y las funciones y en los .cpp las defines, ¿no? Lo he intentado pero me da problemas, será que no sé muy bien cómo va. ¿Tienen que llamarse igual cambiando la extensión y estar en la misma carpeta? ¿Al incluirlo con #include se especifica el .h y este ya sabe encontrar el .cpp? Ahora mismo estoy utilizando sólo el .cpp, y es el que incluyo, funciona, pero me gusta hacer las cosas bien y me gustaría usar el .h. Saludos. |
Para los archivos cabecera de un proyecto, lo normal es que estén en la carpeta del cpp que los incluye. En ese caso se incluyen así:
Código:
#include "archivo.h" |
| La franja horaria es GMT +2. Ahora son las 19:11:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi