Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Перегрузка функций

Автор: sheka 11.03.2011 5:48

В родителе есть 2 функции:
а(b: text); виртуальная - и в наследниках
a(b: string); статическая, только в родителе
При вызове в наследнике а('asdf'); почему-то ругается.

Автор: volvo 11.03.2011 5:55

Код показывай, проверил у себя на простейшем примере - не ругается...

Автор: sheka 11.03.2011 6:08

Прикрепленный файл  Viselica.rar ( 3.72 килобайт ) Кол-во скачиваний: 413

Процедуры LoadFromFile;
Самый "старый" родитель TPoint. Самый "молодой" ТBar. Ругается в Мейне на вызов процедуры с параметрами не того типа.

Автор: volvo 11.03.2011 6:22

type
PTPoint = ^TPoint;
TPoint = object
// ...

procedure LoadFromFile(var f: text); virtual; overload;
procedure LoadFromFile(const FileName: string); overload;
end;

Чудо !!! smile.gif

Автор: sheka 11.03.2011 22:28

Почему без overload; ошибку не выдает?

Автор: volvo 11.03.2011 22:32

Это смотря в каком режиме компилируешь. Если в {$mode delphi} - то как раз выдает.

Автор: sheka 12.03.2011 4:50

а в наследниках overload писать не надо? (не ругается, просто)

Автор: volvo 12.03.2011 5:32

У тебя в наследниках же нет второй версии (которая статическая), ты говорил, что она только в родителе. А Overload используется, чтобы дать понять компилятору, что в одном Object-е / Class-е есть несколько методов с одним именем.