【发布时间】:2012-02-17 21:26:08
【问题描述】:
目前我有一些看起来像这样的代码
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 和向下转换。
大概这很糟糕。
但是我怎样才能更精确地向 COM 指定我想要的对象呢?我尝试更改.c、.h 和.idl 文件,但编译器无法将CMyInputClass* 识别为idl 中的类型规范。
interface ICalculation : IDispatch{
[id(2), helpstring("method run")] HRESULT run([in] CMyInputClass* input);
这样做的正确方法是什么?
【问题讨论】: