Помощь - Поиск - Пользователи - Календарь
Полная версия: Перегрузка функций
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
sheka
В родителе есть 2 функции:
а(b: text); виртуальная - и в наследниках
a(b: string); статическая, только в родителе
При вызове в наследнике а('asdf'); почему-то ругается.
volvo
Код показывай, проверил у себя на простейшем примере - не ругается...
sheka
Нажмите для просмотра прикрепленного файла
Процедуры LoadFromFile;
Самый "старый" родитель TPoint. Самый "молодой" ТBar. Ругается в Мейне на вызов процедуры с параметрами не того типа.
volvo
type
PTPoint = ^TPoint;
TPoint = object
// ...

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

Чудо !!! smile.gif
sheka
Почему без overload; ошибку не выдает?
volvo
Это смотря в каком режиме компилируешь. Если в {$mode delphi} - то как раз выдает.
sheka
а в наследниках overload писать не надо? (не ругается, просто)
volvo
У тебя в наследниках же нет второй версии (которая статическая), ты говорил, что она только в родителе. А Overload используется, чтобы дать понять компилятору, что в одном Object-е / Class-е есть несколько методов с одним именем.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.