Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.033 c
7-54340
BALU1111
2003-01-16 14:57
2003.03.17
Определитель номера


14-54283
Melbis
2003-02-28 16:17
2003.03.17
Приличная таблица на делфи?


1-54066
AlexVit
2003-03-04 08:04
2003.03.17
Как определить, что приложение зависло?


3-53895
Conder
2003-02-25 11:30
2003.03.17
Порисовать на Title в DbGride...


14-54184
Morfey
2003-03-03 00:48
2003.03.17
Прога





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский