Текущий архив: 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.45 MB
Время: 0.01 c