Sto usando Delphi 2007 per mantenere un vecchio progetto, ho un problema nell'accedere alle costanti di classe da una variabile di riferimento di classe, ottengo sempre la costante della classe genitrice invece di quella dei figli .Accesso alle costanti di classe da una variabile di riferimento di classe in Delphi
Supponiamo di avere una classe genitore, alcune classi figlie, un riferimento di classe e infine un array const per memorizzare i riferimenti di classe per scopi di ciclo.
un'occhiata al seguente programma semplice:
program TestClassConst;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TParent = class
const
ClassConst = 'BASE CLASS';
end;
TChild1 = class(TParent)
const
ClassConst = 'CHILD 1';
end;
TChild2 = class(TParent)
const
ClassConst = 'CHILD 2';
end;
TParentClass = class of TParent;
TChildClasses = array[0..1] of TParentClass;
const
ChildClasses: TChildClasses = (TChild1, TChild2);
var
i: integer;
c: TParentClass;
s: string;
begin
try
writeln;
writeln('looping through class reference array');
for i := low(ChildClasses) to high(ChildClasses) do begin
c := ChildClasses[i];
writeln(c.ClassName, ' -> ', c.ClassConst);
end;
writeln;
writeln('accessing classes directly');
writeln(TChild1.ClassName, ' -> ', TChild1.ClassConst);
writeln(TChild2.ClassName, ' -> ', TChild2.ClassConst);
except
on E: Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
Quando si corre ottengo:
looping through class reference array
TChild1 -> BASE CLASS
TChild2 -> BASE CLASS
accessing classes directly
TChild1 -> CHILD 1
TChild2 -> CHILD 2
mi aspettavo di vedere 'BAMBINO 1' e 'bambino 2' anche in loop serie!
Qualcuno può spiegarmi perché non funziona con riferimento di classe?
Hai bisogno di un metodo virtuale per implementare il polimorfismo . . – kludg