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

Вниз

Вызов метода предка   Найти похожие ветки 

 
mgaikin   (2003-01-27 14:45) [0]

Итак, имеем следующую иерархию классов:
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?


 
Юрий Зотов ©   (2003-01-27 15:22) [1]

Временно (в try-finally) подменить адрес входа в VMT.


 
Бурундук   (2003-01-27 16:18) [2]

Можно так:

type
TBoolFunc = function: Boolean of object;
var
f: TBoolFunc;

TMethod(f).Code := @TClass1.Something;
TMethod(f).Data := Self;
res := f;


 
Palladin ©   (2003-01-27 17:52) [3]

а inherited для чего придумали?


 
uw ©   (2003-01-27 17:53) [4]

Проще в TClass1 завести статический метод Class1DoSomthing и звать его и из TClass1, и из TClass3.


 
uw ©   (2003-01-27 17:54) [5]

К сожалению, не работает inherited inherited.


 
REA ©   (2003-01-27 18:29) [6]

Мне как-то тоже нужно было, но я обошел другим дизайном - это изврат манипулировать VMT и до добра не доведет. Жаль что в inherited нельзя явно указать класс предка.



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
14-15894
kronprince
2003-01-20 12:42
2003.02.06
Кто-нибудь делал свой транспорт вместо BSS


3-15399
alex_bredin
2003-01-21 15:43
2003.02.06
импорт из Excel to db,dbf


14-15890
Anatoly Podgoretsky
2003-01-20 09:27
2003.02.06
Именинники 20 января


4-15977
Zhenya_g
2002-12-22 15:02
2003.02.06
проблема при свертывании в трей


6-15793
1g0r
2002-12-14 13:32
2003.02.06
Вопрос по стандартным TClient(Server)Socket-ам (ошибка 10054 WSAE