PD> class CII : public CComObjectRootEx<CComSingleThreadModel>, public II
PD> {
PD> public:
PD> BEGIN_COM_MAP(CII)
PD> // COM_INTERFACE_ENTRY(IUnknown)
PD> COM_INTERFACE_ENTRY(I1)
PD> COM_INTERFACE_ENTRY(I2)
PD> COM_INTERFACE_ENTRY(II)
PD> END_COM_MAP()
PD> };
PD>
PD>Что я делаю не так?
Вот это убери...
Реализация IUnknown объявлена в BEGIN_COM_MAP.
Имею скафандр — готов путешествовать!
Re[2]: множественное наследование,ATL,COM
От:
Аноним
Дата:
30.10.08 09:05
Оценка:
Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, eProgD, Вы писали:
PD>>
PD>> class CII : public CComObjectRootEx<CComSingleThreadModel>, public II
PD>> {
PD>> public:
PD>> BEGIN_COM_MAP(CII)
PD>> // COM_INTERFACE_ENTRY(IUnknown)
PD>> COM_INTERFACE_ENTRY(I1)
PD>> COM_INTERFACE_ENTRY(I2)
PD>> COM_INTERFACE_ENTRY(II)
PD>> END_COM_MAP()
PD>> };
PD>>
PD>>Что я делаю не так?
RB>Вот это убери... RB>Реализация IUnknown объявлена в BEGIN_COM_MAP.
Дело не только в IUnknown. Если I1 и I2 наследуются от одного интерфейса(к примеру IBase)
то при попытки COM_INTERFACE_ENTRY(IBase), компилятор все равно выдаст ошибку.
Здравствуйте, Аноним, Вы писали:
А>Дело не только в IUnknown. Если I1 и I2 наследуются от одного интерфейса(к примеру IBase) А>то при попытки COM_INTERFACE_ENTRY(IBase), компилятор все равно выдаст ошибку.
COM_INTERFACE_ENTRY2(IBase, I1) — указание получить IBase через I1.