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

Вниз

Подмена protected метода   Найти похожие ветки 

 
Hooch ©   (2002-09-30 17:03) [0]

День добрый !

Господа, можно ли каким нибудь образом переопределить protected метод объекта, не создавая класс на его основе и не трогая сам класс ?


 
qube ©   (2002-09-30 17:06) [1]

Мне кажется, только каким-то ужасным хирургическим вмешательством в VMT.


 
qube ©   (2002-09-30 17:16) [2]

Но protected методы затем и делаются защищенными, чтобы их при желании можно было переопределить нормальным наследованием.


 
Hooch ©   (2002-09-30 17:25) [3]

это то я понимаю, просто не хочется из-за 2 сток кода новый класс городить и во всех формах менять :-)


 
Игорь Шевченко ©   (2002-09-30 17:25) [4]

Hooch © (30.09.02 17:03)

Никак.


 
Hooch ©   (2002-09-30 17:38) [5]

Жаль...очень жаль :-( ну да ладно, кому сейчас легко ? :-)


 
Digitman ©   (2002-09-30 17:48) [6]

Ну отчего же ? Если защищенный метод, к примеру, статический, достаточно в design-time расчитать (если есть исходники) смещение целевого поля (содержащего адрес метода - он един для всех экземпляров класса) и в run-time записать по адресу "адреса экземпляра + смещение поля" адрес иного метода. Лишь бы соглашения о передаче параметров/ возврате результата были соблюдены и корректны в конечном итоге


 
Игорь Шевченко ©   (2002-09-30 17:52) [7]

Digitman © (30.09.02 17:48)

Да некуда там писать...Это же обычный вызов функции, если он не виртуальный :-)


 
Digitman ©   (2002-09-30 18:12) [8]

>Игорь Шевченко

А, ну да ... Ты прав - я это почему-то подразумевал как дифолт-условие)... Т.е. при таких вот условиях можно и поковыряться, иначе - не стоит даже напрягаться)


 
Игорь Шевченко ©   (2002-09-30 18:17) [9]

Digitman © (30.09.02 18:12)

Проще наследника сделать :-)

С уважением,


 
Digitman ©   (2002-09-30 18:21) [10]

>Игорь Шевченко

Да это понятно) ... Но мы ж тут вроде бы как извращаемся))


 
Le Taon   (2002-09-30 18:22) [11]

Ну, можно, наверное, влезть в код метода, заменить первые несколько байт и сделать джамп в свой метод.

Но написать новый класс гораздо проще. И правильнее.



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
3-31595
Brestmarket.com
2002-09-18 16:37
2002.10.10
Как определить версию ADO на компьютере клиента?


6-31920
MrAngel
2002-06-05 15:01
2002.10.10
Прамой коннект между динамическими IP в интернете - реально ли?


4-32070
DanIQ
2002-08-26 07:02
2002.10.10
Управление монитором


14-31957
MJH
2002-09-15 03:55
2002.10.10
WinXP SP1 + StyleXP


14-32002
EAlexander
2002-09-17 10:21
2002.10.10
Нужен ExpressSpreadSheet :))