Forum > Spanish

problema con metodo abstracto

<< < (2/3) > >>

Edson:
Por los mensajes puedo deducir que el problema se produce al llamar al método abstracto pintar().

La declaración de la clase está bien, pero parece que no hay ninguna implementación para la clase Tpadre en alguna clase hija.

Si pintar() es VIRTUAL ABSTRACT, debería existir al menos una clase hija para instanciar un objeto de la clase hija, ya que como Tpadre es una clase abstracta, no soporta instancias.

zelda16bit:
Pero yo no quiero que Tpadre sea abstracta,solo quiero que sea abstracto el metodo pintar.La clase padre no la voy a instanciar solo voy a usar el metodo actualizar para llamarlo desde el archivo principal para que me actualize todos los metodos pintar de las clases hijas y lo usare como un metodo de clase para no tener que instanciar la clase padre.

Tengo una clase hija que hereda de la clase padre y se instancia en otra clase asi que no se porque no funciona,la verdad es que cada vez que intento hacer algo con freepascal tengo bastantes problemas,esta claro que me faltan datos y no se hacer correctamente las cosas.Un saludo y feliz año

Edson:

--- Quote from: zelda16bit on January 03, 2023, 08:50:06 pm ---Pero yo no quiero que Tpadre sea abstracta,solo quiero que sea abstracto el metodo pintar.La clase padre no la voy a instanciar solo voy a usar el metodo actualizar para llamarlo desde el archivo principal para que me actualize todos los metodos pintar de las clases hijas y lo usare como un metodo de clase para no tener que instanciar la clase padre.

--- End quote ---

Basta que una clase tenga un método abstracto para hacer a la clase abstracta. Eso implica que no puedes crear instancias de la clase abstracta Tpadre.

¿Método de clase para no tener que instanciar la clase padre? Creo que estás confundiendo conceptos.

Sospecho que lo que prentendes hacer es un simple polimorfismo, pero es difícil verlo si no tienes un código completo de demostración.

zelda16bit:
He subido un zip con todo el codigo para que lo mires si quieres,aunque hay mas problemas a parte del comentado.He intentado subir el zip con todos los archivos pero no me ha dejado subirlo,asi que solo he podido subir el codigo.

Si quieres hacerlo funcionar desde lazarus necesitaras allegro5 de nuño.
https://allegro-pas.sourceforge.net/

Edson:
He intentado compilar tu código, incluyendo la librería, pero me da errores extraños. Mejor incluye los archivos necesarios de la librería en  dentro del proyecto o reduce tu código de modo que no requiera la librería, de paso que vas descartando por donde va el problema.

Lo que veo extraño en tu definición de clases es que creas una instancia de Tpadre.lista (que es de clase) por cada objeto Tpadre que vas creando. Eso de por sí me parece que te debe generar un error de fuga de memoria.

Te recomendaría no usar instancias de clase para almacenar las referencias a los objetos que vas creando. Puedes usar una lista simple, fuera de la clase.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version