tgeneric12.pp 669 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. {$mode objfpc}
  2. type
  3. TSList = class(TObject)
  4. procedure Test; virtual;
  5. end;
  6. generic TList<_T> = class(TSList)
  7. data : _T;
  8. procedure Add(item: _T);
  9. procedure Test; override;
  10. end;
  11. TListCompareFunc = function(Item1, Item2: Integer): Integer;
  12. procedure TSList.Test;
  13. begin
  14. writeln('should call TList!');
  15. halt(1);
  16. end;
  17. procedure TList.Add(item: _T);
  18. begin
  19. data:=item;
  20. end;
  21. procedure TList.Test;
  22. begin
  23. if data <> 10 then
  24. halt(1);
  25. writeln('ok');
  26. end;
  27. type
  28. TMyIntList = specialize TList<Integer>;
  29. var
  30. ilist: TMyIntList;
  31. list: TSList;
  32. begin
  33. ilist := TMyIntList.Create;
  34. list := ilist;
  35. ilist.add(10);
  36. list.test;
  37. end.