COM - Как создать метод, который возвращает указатель на интерфейс? - PullRequest
2 голосов
/ 26 января 2010

Как создать метод в COM, который возвращает указатель на интерфейс, это нужно сделать внутри файла IDL.

EDIT:

Как мне реализовать это в классе:

STDMETHODIMP CBlah::get_Something(IOtherBlah** retval){
return m_protectedvar->QueryInterface(retval);
}
STDMETHODIMP CBlah::put_Somthing(IOtherBlah* rhs){
m_protectedvar = rhs;
return S_OK;
}

Выше не работает. Я получаю следующую ошибку:

cannot instantiate abstract class with[ Base=Blah ] due to following members:
'HRESULT IBlah::putref_Something(IOtherBlah*)' : is abstract

Ответы [ 2 ]

5 голосов
/ 26 января 2010

Примерно так:

 interface IYourInterface {
     HRESULT GetPointer( [out, retval]IInterface** );
 };

Звонящий позвонит так:

 IInterface* pointer = 0;
 HRESULT hr = yourInterfacePointer->GetPointer( &pointer );
2 голосов
/ 26 января 2010
[ attributes here...]
interface IBlah : IDispatch {
  [id(1), propget]    HRESULT Something([out,retval] IOtherBlah** retval);
  [id(1), propputref] HRESULT Something([in] IOtherBlah* rhs);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...