Интерфейсы с одинаковыми методами в COM
От: Kolbas  
Дата: 07.11.05 15:00
Оценка:
Как определить с какого интерфейса вызван метод класса, если он имеет несколько интерфейсов, которые содержат одинаковые сигнатуры методов? Есть ли решение лучше, чем делать обертку для
интерфейса с переопределением методов (или это вовсе не решение)


interface IFace1 : public IUnknown 
{
  long Method()=0;
};

interface IFace2 : public IUnknown 
{
  long Method()=0;
};
 
class ATL_NO_VTABLE TFACEImpl :
  public CComObjectRootEx<CComMultiThreadModel>,
  public CComCoClass<TFACEImpl, &CLSID_FACE>,
  public IBase,
  DUALINTERFACE_IMPL(Base, IFace1),
  DUALINTERFACE_IMPL(Base, IFace2)

{
public:
...

BEGIN_COM_MAP(TR2MImpl)
  COM_INTERFACE_ENTRY(IFace1)
  DUALINTERFACE_ENTRY(IFace2)
END_COM_MAP()

  STDMETHOD Method() // Реализация общая для обоих интерфейсов, а хотелось бы разделить 
  {
  }
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.