2011-08-29 20 views
5

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,

Respuesta

4

constructor heredado (aName) debería hacerlo.

+0

@ 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

+0

instrucción 'inherited;' solo al comienzo del constructor de subclase parece estar bien – geekobi

+0

Sí, eso también funciona. Aunque no cuando respondí esto –

Cuestiones relacionadas