Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Внизinherited??? Найти похожие ветки
← →
nikolas (2005-06-08 13:35) [0]Добрый день!
Вот ситуация: есть базовый класс А, от него наследован В а от В - С. В классе А есть некий метод Do. Классы В и С перекрывают этот метод каждый по своему. И вот требуется в С.Do вызвать реализацию базового класса А. Как енто сделать? Inherited вызывает тока метод класса B...
← →
Alexander Panov © (2005-06-08 13:38) [1]A(C).Do не подойдет?
← →
TUser © (2005-06-08 13:42) [2]Сделать в В обертку, которая вызовет inherited. К сожалению, в Delphi есть возможность вызывать унаследованный метод только непосредственного предка.
← →
jack128 © (2005-06-08 13:43) [3]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;
← →
nikolas (2005-06-08 13:46) [4]> jack128
спасибо, то что надо
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.038 c