Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Использовать во внуке метод деда, наследование


Автор: Delphist 8.5.2007, 14:42
У меня есть три объекта: Дед, отец, сын отца или внук по отношению к деду.
У Деда есть виртуальный метод procedure SetProp; virtual; данный метод перекрывается у отца procedure SetProp; override;. Теперь нужно сделать так, чтобы у внука вызывался не отцовский метод, а метод деда как это сделать? 

Автор: Yanis 8.5.2007, 14:50
дед.метод -- не?

Автор: Delphist 8.5.2007, 15:04
Мне нужно чтобы во внуке вызывался метод деда.

Автор: Rennigth 8.5.2007, 15:26
Delphist, Стандартными способами не получится. Сам принцип ООП такого не позволяет.

Вроде люди обходили как-то, но не считаю что вообще такой подход правильний. 
Правильней пересмотреть саму структуру и построить грамотную модель.

Добавлено через 3 минуты и 4 секунды
Delphist, 
Это конечно если я тебя правильно понял, что ты хочешь что-бы override-метод папы не работал, а работал методы деда и внука.  smile 

Автор: ama_kid 8.5.2007, 15:29
Delphist
Если у тебя метод отца override'ит метод деда - то, имхо, только через какой-нибудь метод отца, который будет делать inherited SetProp деда... Можно сделать у отца overload вместо override и в сыне вызывать TDed(Self).SetProp - тогда будет вызываться напрямую метод деда...

Автор: Alexeis 8.5.2007, 16:14
Rennigth, 
Цитата(Rennigth @  8.5.2007,  15:26 Найти цитируемый пост)
Вроде люди обходили как-то, но не считаю что вообще такой подход правильний. 
Правильней пересмотреть саму структуру и построить грамотную модель.


  Меняли адрес VMT на VMT предка?

Автор: Rennigth 8.5.2007, 16:46
Цитата(Alexeis @  8.5.2007,  16:14 Найти цитируемый пост)
  Меняли адрес VMT на VMT предка?

Не помню, не вникал особо, но что-то VMT мутили.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)