Tôi đang sử dụng Delphi 2007 để duy trì một dự án cũ, tôi gặp vấn đề khi truy cập các hằng số lớp từ biến Class Reference, tôi luôn nhận được hằng số lớp cha thay vì con .Truy cập vào các hằng số lớp từ một biến tham chiếu lớp trong Delphi
Giả sử có lớp cha, một số lớp con, tham chiếu lớp và cuối cùng là mảng const để lưu trữ tham chiếu lớp cho mục đích lặp.
hãy xem sau chương trình đơn giản:
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.
Khi nó chạy tôi nhận được:
looping through class reference array
TChild1 -> BASE CLASS
TChild2 -> BASE CLASS
accessing classes directly
TChild1 -> CHILD 1
TChild2 -> CHILD 2
tôi mong đợi để xem 'CON 1' và 'CON 2' cũng trong vòng lặp mảng!
Bất cứ ai có thể giải thích cho tôi lý do tại sao nó không hoạt động với tham chiếu lớp học?
Bạn cần một phương pháp ảo để thực hiện đa hình . . – kludg