Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.054 c
8-1109699665
Руслана
2005-03-01 20:54
2005.06.29
Где можно почитать о создании собственного кодека (аудио)


1-1118045317
Motion
2005-06-06 12:08
2005.06.29
Запуск из приложения файла справки


4-1114502136
Shuhrat
2005-04-26 11:55
2005.06.29
Доступ к PCI - устройству


14-1117824070
Мучимый жаждой
2005-06-03 22:41
2005.06.29
На чем писали самый первый язык программирования?


14-1117791381
Ega23
2005-06-03 13:36
2005.06.29
Без халтуры - ну никак!