|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.12.2012, 15:38 | #1 |
Пользователь
Регистрация: 27.09.2010
Сообщений: 44
|
TVirtualMethodInterceptor
Всем привет! Может кто знает, когда перехвачиваешь virtual метод, что происходит в override методах? Можно ли перехватить override метод? Такая ситуация. Есть базовый класс с методом. И есть производный класс с перегруженым методом. При одном условии нужно выполнить базовый метод, а при другом производный.
|
29.12.2012, 21:43 | #2 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Тогда не нужно делать данный метод виртуальным. В том то и смысл виртуальных методов. Адрес виртуального метода хранится в самом экземпляре объекта. Но спасает inherited/
Теоретически можно динамически создать новый экземпляр предка (...ClassParent.Create) "эдентичный" существующему экземпляру-потомка и выполнить его метод (бред полный). Можно получить адрес виртуального метода предка и выполнить его (гемор и бред). Лучше просто не далать его виртуальным. Но если уж надо (или предок - не ваше творение ), то как вариант ППниПП (реализовано 2 варианта: inherited и экземпляр предка): Код:
Последний раз редактировалось Sibedir; 29.12.2012 в 21:46. |