В настоящее время у меня есть код, который выглядит следующим образом
void calc_run(Calculation *c, Input *i);
STDMETHODIMP CCalculation::run(IUnknown* input)
{
calc_run(calc,((CMyInputClass*)input)->get_input());
return S_OK;
}
Другими словами CCalculation::run
хочет указатель на CMyInputClass
, но в настоящее время требуется IUnknown
и downcasts.
Предположительно, это плохо.
Но как я могу более точно указать COM, какой объект я хочу? Я попытался изменить файлы .c
, .h
и .idl
, но компилятор не распознает CMyInputClass*
как спецификацию типа в idl
.
interface ICalculation : IDispatch{
[id(2), helpstring("method run")] HRESULT run([in] CMyInputClass* input);
Как правильно это сделать?