ATL7 и наследование
От: SDM  
Дата: 01.10.02 09:44
Оценка:
Решился и я приобщиться к высоким материям и немного отпозти от Delphi к VC и ATL и тут же приполз

Итак:
Есть интерфейс IBase: IDispatch.
От него есть наследник IMyInterface.

(ПРИМЕЧАНИЕ: В моем случае чисто IBase не используется, а используются только его наследники)

Соответствено есть класс реализующий
IBase- CBase: public IBase

теперь в классе реализующем IMyInterface мне хочется написать
CMyInterface: public IMyInterface, CBase
дабы не реализовывать методы из IBase

но! вот тут-то и начинается самое интересное Эта хитрая скотинка VC заявляет, мол не могу пронаследовать один класс с аттрибутом coclass от другого с аттрибутом coclass.

Абыдо, да ? Ладно (см. примечание), удаляем атрибуты coclass, etc- перестает ругаться на невозможность наследования, начинает ругаться на то, что не может привести _ComMapClass к IMyInterface (или к IBase я точно не помню, у меня щаз под рукой VC нет.)
Ладно, думаю, помню как в VC6 боролся: пишу com_interface_entry("COM_INTERFACE_ENTRY2(IBase, IMyInterface)"), все равно не лечит!

Тут уж я совсем обиделся Ладно, из "CBase: public IBase" удаляю ": public IBase", т.е. остается просто CBase и методы от IBase. Теперь оно ругается на то что в CMyInterface не реализованы методы IBase, хотя они есть в CBase

Причем в VC6 мне удавалось добиться того чего я хочу, путем COM_INTERFACE_ENTRY2, но в VC7 примерчик который чудно работал в VC6 не собирается и так-же ругается

Просвятите, pls, как с этим бороться (блин, в делфях все так просто и понятно )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.