Передача объектов с помощью параметра метода ATL C

#c #com #atl #ole

#c #com #atl #ole

Вопрос:

Привет, я пытаюсь вернуть свой OLE-объект (SerwerError) следующим образом :

 [propget, id(2)] HRESULT LastError([out, retval] IServerError* pVal);
  

но я получаю ошибку :

 syntax error : expecting a type specification near "IServerError"
  

Я не могу найти разрешение… Как я могу передать Ole-объект ([in] / [out])

Ошибка CServerError :

Комментарии:

1. Вы показываете снимок экрана с именем класса C CServerError. C, а не I. Какие интерфейсы он реализует или вы забыли #включить файл .h, угадать невозможно.

2. @HansPassant screenshot.sh/mKTX2EwR7ovDY

Ответ №1:

[out] параметр указателя интерфейса должен иметь тип «указатель на указатель интерфейса»:

 [out, retval] IServerError** pVal
  

То есть вторая звездочка. Вы будете возвращать IServerError* значение. Затем IServerError сам интерфейс должен быть определен достаточно рано, чтобы на момент объявления метода его тип был известен.

Комментарии:

1. я объявил IServerError