Re[3]: id и смещение в idl файле.
От: Vi2 Удмуртия http://www.adem.ru
Дата: 08.02.10 12:31
Оценка:
Здравствуйте, zxcvb, Вы писали:

Z>Почитал про ITypeInfo и всетаки остался непонятный момент. Предположим что интерфейс имеет таблицу виртуальных функций, и у меня есть тот набор данных что я описал в первом посте, могу ли я с этой таблицей работать просто как с массивом указателей, или я должен обязательно вычислять адресс метода в ней при помощи id и ITypeInfo::AddressOfMember. MSDN почему-то этот момент туманно описывает.


Честно говоря, я не уверен, что ITypeInfo::AddressOfMember вернет что-то осмысленное для виртуальных функций. Хотя кто знает...

Z>То есть верно ли мое утверждение о том, что указатели в таблице будут идти строго друг за другом в том же порядке, который указан в midl файле?


Это утверждение верно, потому что виртуальная таблица формируется по такой же стратегией, что и компилятор С++ при обработке класса с виртуальными функциями.

PS
У ITypeInfo есть метод Invoke, который умеет вызывать виртуальные функции. Может и не стоит заморачиваться со смещениями?
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.