Tengo dos clases: clase base y clase heredada de la siguiente manera.¿Cómo llamar correctamente al constructor de la clase base de la clase heredada en Delphi Phrism?
clase de base:
TAlarm = class(System.Object)
private:
protected:
public:
constructor (tag:TTagname);
end;
clase heredada:
TAlarmMsg = class(TAlarm)
public
constructor (aname:string);
method GetAlarmMsg:string; override;
method SendMsg(msg:string);
end;
constructores:
constructor TAlarm(tag:TTagname);
begin
Tagname := tag;
end;
constructor TAlarmMsg(aname:string);
begin
inherited TAlarm(aname); <========Here is my problem.
name := aname.ToCharArray;
end;
No importa qué o cómo llamo o juego con el constructor heredado, sigo recibiendo los siguientes mensajes de error cuando compilo el archivo fuente.
- No se puede acceder a uno mismo antes de que el constructor heredado haya finalizado. Y/O - No se puede encontrar el constructor apropiado en la clase base por lo que se requiere una llamada manual a heredado
Por cierto, he pasado medio día investigando sobre este tema y he encontrado buena información en línea. Nada ayuda hasta ahora. Incluso encontré la página web que habla directamente sobre constructores en Delphi Prism Wikipedia (http://prismwiki.embarcadero.com/en/Constructors).
Entonces, ¿cómo lo harías correctamente? Gracias,
@ CK, aName es una cadena que no es una matriz de caracteres y por eso tenía un problema. Simplemente corregí la línea ofensiva como sigue: constructor heredado (aName.ToCharArray); Funciona. Gracias, – ThN
instrucción 'inherited;' solo al comienzo del constructor de subclase parece estar bien – geekobi
Sí, eso también funciona. Aunque no cuando respondí esto –