Показать сообщение отдельно
  #2  
Старый 19.06.2017, 21:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну тут надо по другому - либо в родителе метод абстрактрый и реализован в потомках, либо шаблоны/дженерики.

Вариант первый - классическое ООП:
Код:
type
  A = class
    procedure add( i : integer); virtual; abstract;
  end;

  B = class(A)
    ab : array of integer;
    procedure add( i : integer); override;
  end;

  C = class(A)
    ac : array of integer;
    procedure add( i : integer); override;
  end;

  procedure B.add( i : integer); override;
  begin
    setlength(ab,length(ab)+1);
    ab[high(ab)] := i;
  end;

  procedure C.add( i : integer); override;
  begin
    setlength(ac,length(ac)+1);
    ab[high(ac)] := i;
  end;

Вариант второй - generic
Код:
type
  class TA<T>
    a : array Of T;
    procedure Add(i : T);
  end;

procedure TA<T>.Add(i : T);
begin
  setlength(a,length(a)+1);
  a[high(a)] := i;
end;

...

var
  b : TA<integer>;
  c : TA<int64>;
begin
  b := TA<integer>.create;
  c := TA<int64>.create;
  ...
Ответить с цитированием