![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
inherited??? [D6, Win2k]
nikolas © (2005-06-08 13:35:00)Добрый день!
Вот ситуация: есть базовый класс А, от него наследован В а от В - С. В классе А есть некий метод Do. Классы В и С перекрывают этот метод каждый по своему. И вот требуется в С.Do вызвать реализацию базового класса А. Как енто сделать? Inherited вызывает тока метод класса B...
nikolas (2005-06-08 13:46:00) [1]> jack128
спасибо, то что надо
jack128 (2005-06-08 13:43:00) [2]Do - виртуальный как я понял. Под перекрытием override имеется в виду.
Если метод B.Do не вызывает никаких других виртуальных методов, то можно попробываьт такой финт ушами..
procedurу C.Do;
var
SelfClass: TClass;
begin
SelfClass := Self.ClassType;
PPointer(Self)^ := A;
try
Self.Do;
finally
PPointer(Self)^ := SelfClass;
end;
end;
TUser (2005-06-08 13:42:00) [3]Сделать в В обертку, которая вызовет inherited. К сожалению, в Delphi есть возможность вызывать унаследованный метод только непосредственного предка.
Alexander Panov (2005-06-08 13:38:00) [4]A(C).Do не подойдет?