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

Вниз

VMT   Найти похожие ветки 

 
Начинающий программист ©   (2003-03-04 17:57) [0]

Товарищи! Кто-нибудь может подсказать как писать в VMT и как менять ее размер. Заранее благодарен.


 
uw ©   (2003-03-04 18:13) [1]

Ни начинающему, ни продвинутому ничего туда писать не надо, imho.


 
icWasya ©   (2003-03-04 18:30) [2]

И вообще для чего это может понадобится???


 
vuk ©   (2003-03-04 18:35) [3]

См. понятие наследования. Там и запись в VMT и изменение размеров. Правда все это компилятор делает. :o)


 
Начинающий программист ©   (2003-03-04 18:36) [4]

Люди, я серьезно. Требуется в процессе выполнения добавлять интерфейсы к уже скомпилированным классам (т.е. переписать InterfaceTable, соответственно изменить указатель в VMT). Требуется перегружать методы скомпилированных классов. Нужны переменные класса. Возможно потребуется формировать новые классы. На VMT стоит защита от записи. Как отключить?


 
vuk ©   (2003-03-04 18:43) [5]

Динамическое множественное наследование имитируете?


 
icWasya ©   (2003-03-04 18:46) [6]

а по другому нельзя??


 
vuk ©   (2003-03-04 18:48) [7]

>а по другому нельзя??
Если делается именно то, что я предположил, то можно.


 
Начинающий программист ©   (2003-03-04 18:50) [8]

>Динамическое множественное наследование имитируете?

Точно не знаю :)
1. Есть класс, который реализует несколько интерфейсов. В некоторых случаях хочу добавить еще несколько.
2. В классе есть виртуальный метод. Хочу перегрузить его в процессе выполнения программы.
3. Есть описание класса и библиотека процедур. Хочу в процессе выполнения постоить класс по описанию, подцепить процедуры и интерфейсы.


 
vuk ©   (2003-03-04 19:03) [9]

>Есть класс, который реализует несколько интерфейсов. В некоторых
>случаях хочу добавить еще несколько.
Пример:
Есть классы А, B и C, реализуюшие некоторые интерфейсы.
Экземпляр класса A владеет экземплярами B и C, при этом метод QueryInterface в нем перекрыт так, что запрашивает все интерфейсы, которые не реализованы в нем самом у экземпляров классов, которыми он владеет. До кучи в B и C QueryInterface перекрывается таким образом, чтобы в том случае, если они являются агрегированными A, запрос IUnknown возвращал реализацию IUnknown от A. Вот и все.


 
Начинающий программист ©   (2003-03-04 19:23) [10]

>Есть классы А, B и C, реализуюшие некоторые интерфейсы...
В том то и дело, что класс А уже скомпилирован. Сколько таких A будет на момент компиляции тоже не известно. Лучшее что можно сделать -- переписать InterfaceTable (какие у меня при этом трудности возникли я уже писал).


 
vuk ©   (2003-03-04 19:30) [11]

>В том то и дело, что класс А уже скомпилирован.
А переделать - это никак?

>Лучшее что можно сделать -- переписать InterfaceTable
Самое худшее, что можно сделать - вломиться туда куда ломиться не стоит.

P.S. И вообще, всё это дело похоже на неправильное проектирование системы...



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
14-54180
vetalar
2003-03-02 00:04
2003.03.17
Срочно требуются дельфийцы (Удаленное программирование)


1-53981
helen
2003-03-06 11:11
2003.03.17
работа с формами


14-54229
Мыш
2003-03-03 17:06
2003.03.17
База имен


14-54282
Мазут Береговой
2003-02-28 09:00
2003.03.17
Бог един?


14-54214
Astarot
2003-03-03 12:16
2003.03.17
BDE - быстрая установка