|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Не работает перегрузка функций
Здравствуйте.
Не работает перегрузка функций. Пример. Всё время вызывается перегруженная функция 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; Последний раз редактировалось Admin, 22.09.2022 в 11:51. |
#2
|
|||
|
|||
На самом деле сначала вызывается твоя функция getDParams, а уже с результатом ее вызова вызывается конструктор. Попробуй вызвать так:
Код:
fBitProp := TBase.Create(@getDParams); |