Форум: "Основная";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c