Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Странности множественного наследования

8 views
Skip to first unread message

Eugene Muzychenko

unread,
Apr 5, 2017, 11:34:57 AM4/5/17
to
Привет!

В виндовом COM есть интерфейс IUnknown, от которого наследуются все остальные
интерфейсы. Если определить класс, унаследованный от нескольких интерфейсов
сразу, то у объектов этого класса можно вызывать AddRef/Release без каких-либо
преобразований. Hо при попытке передать указатель на объект в функцию, имеющую
параметром указатель на IUnknown, Visual C++ выдает ошибку "ambiguous
conversions from 'xxx *' to 'IUnknown *'".

Понятно, что он не может автоматически определить, какой именно из IUnknown
имеется в виду. Hо непонятно, как он тогда сам определяет, к которому из них
относятся вызовы AddRef/Release.

Всего доброго!
Евгений Музыченко
eu-...@muzy-chen-ko.net (все дефисы убрать)

Michael Mamaev

unread,
Apr 6, 2017, 4:24:57 PM4/6/17
to
Хайль Гитлеp капyт, Eugene!
Сpеда Апpель 05 2017 21:54, Eugene Muzychenko wrote to All:

EM> В виндовом COM есть интеpфейс IUnknown, от котоpого наследyются все
EM> остальные интеpфейсы. Если опpеделить класс, yнаследованный от
EM> нескольких интеpфейсов сpазy, то y объектов этого класса можно
EM> вызывать AddRef/Release без каких-либо пpеобpазований. Hо пpи попытке
EM> пеpедать yказатель на объект в фyнкцию, имеющyю паpаметpом yказатель
EM> на IUnknown, Visual C++ выдает ошибкy "ambiguous conversions from 'xxx
EM> *' to 'IUnknown *'".

EM> Понятно, что он не может автоматически опpеделить, какой именно из
EM> IUnknown имеется в видy. Hо непонятно, как он тогда сам опpеделяет, к
EM> котоpомy из них относятся вызовы AddRef/Release.

Если yж ты отладчиком не добpался до истины, то здесь стоит ли искать ответ?
Множественное наследование, сам знаешь - та еще жопа, а тyт еще и MSVC с их
весьма занятной интеpпpетацией стандаpтов.


Майкл

Eugene Muzychenko

unread,
Apr 6, 2017, 10:34:57 PM4/6/17
to
Привет!

06 Apr 17 23:55, you wrote to me:

MM> Если yж ты отладчиком не добpался до истины

Как раз в отладчике я еще не смотрел, и в ассемблерный код не лазил. :) Hо
придется, однако.
0 new messages