IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Перегрузка функций, наследование
sheka
сообщение 11.03.2011 1:48
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


В родителе есть 2 функции:
а(b: text); виртуальная - и в наследниках
a(b: string); статическая, только в родителе
При вызове в наследнике а('asdf'); почему-то ругается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
volvo
сообщение 11.03.2011 1:55
Сообщение #2


Гость






Код показывай, проверил у себя на простейшем примере - не ругается...
 К началу страницы 
+ Ответить 
sheka
сообщение 11.03.2011 2:08
Сообщение #3


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


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

Процедуры LoadFromFile;
Самый "старый" родитель TPoint. Самый "молодой" ТBar. Ругается в Мейне на вызов процедуры с параметрами не того типа.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.03.2011 2:22
Сообщение #4


Гость






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 18:28
Сообщение #5


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Почему без overload; ошибку не выдает?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.03.2011 18:32
Сообщение #6


Гость






Это смотря в каком режиме компилируешь. Если в {$mode delphi} - то как раз выдает.
 К началу страницы 
+ Ответить 
sheka
сообщение 12.03.2011 0:50
Сообщение #7


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


а в наследниках overload писать не надо? (не ругается, просто)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.03.2011 1:32
Сообщение #8


Гость






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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"