Главная страница
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
3-53894
Destroyer
2003-02-25 08:51
2003.03.17
Автоинкрементное поле


8-54117
aspen
2002-12-03 13:45
2003.03.17
программное определение частоты


14-54196
Дмитрий К.К.
2003-03-03 06:23
2003.03.17
Апплеты


6-54133
scorpio2002
2003-01-27 12:45
2003.03.17
Пакеты TCP/IP


3-53954
murch
2003-02-25 20:40
2003.03.17
Помогите выбрать БД.