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

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

Вызов метода предка класса минуя непосредственного предка. [D5, Win2k]


Страницы:   1 2

harisma ©   (2006-08-17 14:03:00) 

Вопрос такой: Есть 3 класса А - В - С. В унаследован от А, С унаследован от В. В классах есть перекрытый метод. Как мне из этого метода в классе С вызвать этот же метод класса А? типа как делается inherited для вызова метода непосредственного предка?


default   (2006-08-17 14:25:00) [21]

Ketmar ©   (17.08.06 14:24) [9]
это неверный способ([4])


Ketmar   (2006-08-17 14:24:00) [22]

> [4] harisma   (17.08.06 14:15)
а чем этот не нравится? есть конечно, и не один, ивсе через анус. но зачем?


tesseract   (2006-08-17 14:22:00) [23]


> tesseract ©   (17.08.06 14:13) [3]


очепятался. там self.


default   (2006-08-17 14:22:00) [24]

tesseract ©   (17.08.06 14:13) [3]
так будет переполнение стека из-за бесконечной рекурсии


begin...end   (2006-08-17 14:21:00) [25]

Заменить ссылку на VMT, вызвать метод, восстановить ссылку.


default   (2006-08-17 14:18:00) [26]

A = class
   procedure F; virtual;
 end;

 B = class(A)
   procedure F; override;
 end;

 C = class(B)
   procedure F; override;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure A.F;
begin
 ShowMessage('A.F');
end;

procedure B.F;
begin
 ShowMessage('B.F');
end;

procedure C.F;
var
 P: procedure of object;
begin
 TMethod(P).Code := @A.F;
 TMethod(P).Data := Self;
 P;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 O: C;
begin
 O := C.Create;
 O.F;
end;

как вариант


harisma   (2006-08-17 14:15:00) [27]

Спасибо. А еще варианты есть?


tesseract   (2006-08-17 14:13:00) [28]

A(ыуда).CallMethod -  должен вызваться именно метод класса А.


harisma   (2006-08-17 14:10:00) [29]

виртуальный


begin...end   (2006-08-17 14:07:00) [30]

Статический или виртуальный?


Страницы:   1 2

Наверх

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