Показать сообщение отдельно
  #1  
Старый 22.09.2022, 11:32
Metrofun Metrofun вне форума
Прохожий
 
Регистрация: 22.09.2022
Сообщения: 1
Версия Delphi: Delphi 10.4.2
Репутация: 10
Вопрос Не работает перегрузка функций

Здравствуйте.
Не работает перегрузка функций.
Пример.
Всё время вызывается перегруженная функция TBase.Create(Value: LongWord), вне зависимости от передаваемого параметра
в Delphi 10.4.2 Sydney, в Delphi 7 всё работает корректно, т.е. в зависимости от передаваемого параметра вызывается соответствующая перегруженная функция.
Код:
TTypeFunc = function: LongWord of object;
 
TBase=class 
protected
    fFuncValue: TTypeFunc;
    fValue: LongWord;
public
    constructor Create (Func: TTypeFunc); overload;
    constructor Create (Value: LongWord); overload;
end;
 
TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
private
  fBaseProp: TBase;
  function getValue: LongWord;
public
end;
 
constructor TBase.Create(Func:TTypeFunc);
begin
 fFuncValue := Func;
 fValue := 0;
end;
 
constructor TBase.Create(Value: LongWord);
begin
 fFuncValue := nil;
 fValue := Value;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  //!!! Идет вызов TBase.Create(Value: LongWord) а не 
  //TBase.Create(Func:TTypeFunc)
  fBitProp := TBase.Create(getDParams);
end;
Админ: Пользуемся тегами при оформлении кода!
Ответить с цитированием