2011-08-29 24 views
5

Ho due classi: classe base e classe ereditata come segue.Come chiamare correttamente il costruttore della classe base dalla classe ereditata in Delphi Phrism?

fondo:

TAlarm = class(System.Object) 
private: 
protected: 
public: 
    constructor (tag:TTagname); 
end; 

classe ereditata:

TAlarmMsg = class(TAlarm) 
    public 
    constructor (aname:string); 
    method GetAlarmMsg:string; override; 
    method SendMsg(msg:string); 
    end; 

costruttori:

constructor TAlarm(tag:TTagname); 
begin 
    Tagname := tag; 
end; 

constructor TAlarmMsg(aname:string); 
begin 
    inherited TAlarm(aname); <========Here is my problem. 
    name := aname.ToCharArray; 
end; 

Non importa cosa o come chiamo o gioco con il costruttore ereditato, continuo a ricevere i seguenti messaggi di errore quando compilo il file sorgente.

- Impossibile accedere a Self prima che il costruttore ereditato abbia terminato. E/o - Impossibile trovare il costruttore appropriato nella classe base chiamata in modo manuale è necessaria

proposito ereditato, ho passato buona mezza giornata ricerca su questo tema e ho trovato on-line una buona informazione. Niente aiuta finora. Ho persino trovato la pagina web che parla direttamente dei costruttori su Delphi Prism Wikipedia (http://prismwiki.embarcadero.com/en/Constructors).

Quindi, come lo faresti correttamente? Grazie,

risposta

4

costruttore ereditato (aName) dovrebbe farlo.

+0

@ CK, aName è una stringa non matrice di caratteri e questo è il motivo per cui ha avuto problemi. Ho semplicemente corretto la riga incriminata come segue: costruttore ereditato (aName.ToCharArray); Funziona. Grazie, l'istruzione ' – ThN

+0

'ereditata;' da solo all'inizio del sottoclasse costruttore sembra essere ok – geekobi

+0

Sì, funziona anche. Anche se non quando ho risposto a questo –

Problemi correlati