Рассмотрим следующий пример (я использую Delphi XE):
program Test;
{$APPTYPE CONSOLE}
type
TTestClass<T> = class
private
class constructor CreateClass();
public
constructor Create();
end;
class constructor TTestClass<T>.CreateClass();
begin
// class constructor is not called. this line never gets executed!
Writeln('class created');
end;
constructor TTestClass<T>.Create();
begin
// this line, of course, is printed
Writeln('instance created');
end;
var
test: TTestClass<Integer>;
begin
test := TTestClass<Integer>.Create();
test.Free();
end.
Конструктор класса никогда не вызывается и, следовательно, строка «класс создан» не печатается.Однако, если я уберу обобщение и сделаю TTestClass<T>
стандартным классом TTestClass
, все будет работать как положено.
Я что-то упустил из-за обобщений?Или это просто не работает?
Любые мысли по этому поводу будут оценены!
Спасибо, --Stefan -