pascalabcnet/TestSuite/partial_generics5.pas

22 lines
683 B
ObjectPascal
Raw Permalink Normal View History

2021-10-05 22:31:09 +03:00
type
// Обязательно предыдущее определение всех 3 классов
t1<T> = partial class end;
t2<T> = partial class(t1<T>) end;
t3<T> = partial class(t2<T>) end;
t1<T> = partial class
// Обязательно возвращать или T из шаблона, или тип содержащий T, как array of T
function f1: T; virtual; begin end;
end;
t2<T> = partial class(t1<T>)
end;
t3<T> = partial class(t2<T>)
//Ошибка: Нет метода для переопределения
function f1: T; override := default(T);
end;
begin
var o := new t3<integer>;
assert(o.f1 = 0);
end.