Forum > Spanish
problema con metodo abstracto
zelda16bit:
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---unit Upadre; {$mode objfpc}{$H+} interface uses Allegro5,Generics.Collections; type Tpadre = class strict private padre: Tpadre; lista: specialize TObjectList<Tpadre>; public constructor Create(); procedure pintar();virtual;abstract; procedure actualizar(); destructor Destroy(); override; end; implementation constructor Tpadre.Create(); begin lista := specialize TObjectList<Tpadre>.Create(True); lista.Add(Self); end; procedure Tpadre.actualizar(); begin for padre in lista do begin padre.pintar(); end; end; destructor Tpadre.Destroy(); begin lista.Free(); lista := nil; end; end.
He creado el metodo abstracto pintar para utilizarlo en las clases hijas que hereden de esta,en la clase padre no lo voy a utilizar solo en las hijas pero en el metodo actualizar lo llamo porque este metodo se encargara de actualizar todos lo metodos pintar de todas las clases hijas, sin embargo me dice el compilador que no se puede usar y me da error.
¿Cual es la manera de solucionar este problema?
janasoft:
Buenos días.
Si lo vas a utilizar en la propia clase creo que debes eliminar la declaración 'abstract'.
Con que tengas 'override' es suficiente para poder declararlo en las clases descendientes.
Saludos
Edson:
¿Cuál es el error que te muestra el compilador?
zelda16bit:
--- Quote from: janasoft on December 29, 2022, 12:12:29 pm ---Buenos días.
Si lo vas a utilizar en la propia clase creo que debes eliminar la declaración 'abstract'.
Con que tengas 'override' es suficiente para poder declararlo en las clases descendientes.
Saludos
--- End quote ---
Si quito la declaracion 'abstract' me la marca en rojo y me dice:
-error Forward declaration not solvet "pintar;"
zelda16bit:
--- Quote from: Edson on December 29, 2022, 02:27:30 pm ---¿Cuál es el error que te muestra el compilador?
--- End quote ---
Me sale una ventana con este mensaje:
-El proyecto alegro10 ha lanzado una excepcion de la clase 'RunError(211)'
En archivo 'Upadre.pas' en linea 41:
padre.pintar();
Si le doy a ignorar la excepcion y le doy a continuar me sale otra ventana con este mensaje:
El proyecto alegro10 ha lanzado una excepcion 'EAbstractError': con el mensaje Abstract method called
Si le vuelvo a ignorar la excepcion el programa se cierra sin mas.
Navigation
[0] Message Index
[#] Next page