Рассмотрим эту программу:
type
TMyClass<T: class> = class
public type
TClassOfT = class of T;
end;
begin
end.
Это не удается скомпилировать при объявлении TClassOfT
с сообщением об ошибке:
E2021 Class type required
Может ли кто-нибудь объяснить, почему это так? Если бы я должен был создать экземпляр этого класса, например TMyClass<TObject>
, то, безусловно, class of TObject
был бы значимым. Я ограничил общий параметр как класс. Итак, как объект-компилятор, который T
не является типом класса?