Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вызов метода предка


mgaikin ©   (2003-01-27 14:45:00) 

Итак, имеем следующую иерархию классов:
TClass1 = class
function Something : Boolean; virtual;
end;

TClass2 = class(TClass1)
function Something : Boolean; override;
end;

TClass3 = class(TClass2)
function Something : Boolean; override;
end;

Вопрос в том, как из метода Something класса TClass3 вызвать метод Something класса TClass1?


REA   (2003-01-27 18:29:00) [1]

Мне как-то тоже нужно было, но я обошел другим дизайном - это изврат манипулировать VMT и до добра не доведет. Жаль что в inherited нельзя явно указать класс предка.


uw   (2003-01-27 17:54:00) [2]

К сожалению, не работает inherited inherited.


uw   (2003-01-27 17:53:00) [3]

Проще в TClass1 завести статический метод Class1DoSomthing и звать его и из TClass1, и из TClass3.


Palladin   (2003-01-27 17:52:00) [4]

а inherited для чего придумали?


Бурундук   (2003-01-27 16:18:00) [5]

Можно так:

type
TBoolFunc = function: Boolean of object;
var
f: TBoolFunc;

TMethod(f).Code := @TClass1.Something;
TMethod(f).Data := Self;
res := f;


Юрий Зотов   (2003-01-27 15:22:00) [6]

Временно (в try-finally) подменить адрес входа в VMT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо