![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вызов метода предка
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.