He estado buscando en el foro y en Internet pero no he encontrado nada.
Tengo un programa que, simplificando mucho, es el siguiente. (No creo que a nadie le cueste seguirlo)
Código Delphi
[-]PROGRAM base;
TYPE
CLASE_BASE = CLASS
PUBLIC
PROCEDURE Metodo; VIRTUAL;
END;
CLASE_HIJA = CLASS (CLASE_BASE)
PUBLIC
PROCEDURE Metodo; OVERRIDE;
END;
PROCEDURE CLASE_BASE.Metodo;
BEGIN
WriteLn ('Llamó a CLASE_BASE');
END;
PROCEDURE CLASE_HIJA.Metodo;
BEGIN
WriteLn ('Llamó a CLASE_HIJA');
END;
PROCEDURE Procedimiento (Objeto: POINTER);
BEGIN
WITH CLASE_BASE (Objeto) DO
Metodo;
END;
VAR
Objeto: CLASE_BASE;
BEGIN
Objeto := CLASE_HIJA.Create;
Procedimiento ( POINTER (Objeto));
Objeto.Free;
END.
Como dice el comentario, voy a utilizar un procedimiento como "callback", es decir, que voy a pasar la dirección de dicho procedimiento a una librería ya escrita para que lo llame cuando sea necesario (parecido a la función de procesamiento de mensajes de ventana en Windows).
El problema es que cuando se llama al Procedimiento siempre llama al método de la CLASE_BASE y nunca al de la CLASE_HIJA. ¿Por qué me sucede esto? ¿Cómo puedo hacer que llame al método apropiado?