COM:如何在idl中指定特定类型的COM对象作为参数
COM: how to specify a specific type of COM object as an argument in idl
目前我有一些代码看起来像这个
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);
正确的方法是什么?
COM方式是引入CMyInputClass
将实现的COM接口,并在run()
声明中使用该接口:
interface ICalculationInput : IUnknown {
//some methods here
};
interface ICalculation : IDispatch{
[id(2), helpstring("method run")] HRESULT run([in] ICalculationInput* input);
};
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如何访问从 COM 对象返回的 VARIANT 数据类型中的安全数组C++?
- 如何在 COM 中对方法执行返回类型
- 在 C# 中加载 COM 对象会引发异常"无法将类型'System.__ComObject'的 COM 对象强制转换为接口类型...",但C++或 VB 不会
- 复杂C++数据类型和 COM
- 如何通过COM公开可为null的类型
- COM:如何在idl中指定特定类型的COM对象作为参数
- c\c++ 中存储 COM VT_DECIMAL的正确类型是什么?
- 如何在基于api的服务器中正确转换和使用本机COM类型
- 如何将 C# 接口的方法参数公开为特定的 COM/ODL 类型?
- 在C++中铸造COM类型
- 通过COM返回自定义接口类型的SAFEARRAY到VB6
- 你认为是什么让这个C++代码变慢了?(它循环通过ADODB记录集,将COM类型转换为字符串,并填充ostringstre