COM - 如何创建返回接口(interface)指针的方法?

标签 com interface methods

如何在 COM 中创建返回接口(interface)指针的方法,这需要在 IDL 文件中完成。

编辑:

我如何在类中实现它:

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

最佳答案

像这样:

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

调用者会这样调用它:

 IInterface* pointer = 0;
 HRESULT hr = yourInterfacePointer->GetPointer( &pointer );

关于COM - 如何创建返回接口(interface)指针的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139545/

相关文章:

c++ - 为 Intellisense/对象浏览器等记录 COM 对象

java - 在接口(interface)的所有子类中施加静态变量

c++ - 类方法会增加类实例的大小吗?

Azure COM 对象

c# - .NET 进程外服务器的#import 问题

delphi - 替换Delphi XE3中的RIDL文件和typelib

java - Android - 最多每 15 分钟调用一个方法,否则使用保存的数据

Java 泛型 : Enums and Interfaces

php - 将 PHP 接口(interface)导出到 Typescript 接口(interface),反之亦然?

ruby - 是否有 ruby​​ 方法可以在其他字符串之间选择字符串?