Главная страница
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.021 c
4-54364
John
2003-01-23 21:35
2003.03.17
Как узнать путь к файлу откуда была запущена моя программа?


1-53999
udet
2003-03-06 15:07
2003.03.17
создание файла


1-54017
axs
2003-03-06 18:44
2003.03.17
А это что за глюк???


14-54281
Sergey13
2003-02-28 17:39
2003.03.17
Бывают чудеса на свете


1-54106
AlexT1000
2003-03-05 18:27
2003.03.17
Как получить дуступ из программы к protected методу класса?