Почему я не могу присвоить ссылку на мою функцию соответствующей переменной? E2555 поднят

Я пытаюсь создать пользовательский компаратор, который позволяет присваивать функцию сравнения для внутреннего поля. Чтобы упростить создание компаратора, я попытался добавить функцию класса, похожую на конструкторConstruct который инициализирует компаратор.

Теперь, если я попытаюсь скомпилировать следующий пример, компилятор отобразит

[dcc32 Fehler] ConsoleDemo1.dpr (37): E2555 Символ «Результат» не может быть отслежен

У меня есть следующий пример кода:

program ConsoleDemo1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  Generics.Collections, Generics.Defaults,
  System.SysUtils;

type

  TConstFunc<T1, T2, TResult> = reference to function(const Arg1: T1; const Arg2: T2): TResult;

  TDemo = class(TComparer<string>)
  private
    FVar: TConstFunc<string, string, Integer>;
    function CompareInternal(const L, R: string): Integer;
  public
    class function Construct(): TDemo;
    function Compare(const L, R: string): Integer; override;
  end;

function TDemo.Compare(const L, R: string): Integer;
begin
  Result := FVar(L, R);
end;

function TDemo.CompareInternal(const L, R: string): Integer;
begin
  Result := AnsiCompareStr(L, R);
end;

class function TDemo.Construct: TDemo;
begin
  Result := TDemo.Create();
  Result.FVar := Result.CompareInternal;
end;

end.

Ответы на вопрос(3)

Ваш ответ на вопрос