【问题标题】:how do I overload a function in IDL based on array parameter item type?如何根据数组参数项类型重载 IDL 中的函数?
【发布时间】:2012-12-05 12:55:41
【问题描述】:

假设我在 IDL 中定义了这个函数,如下所示:

[propget, id(6), helpstring("property MyArray")]
HRESULT MyArray([out, retval] SAFEARRAY(myEnum)* pVal);

我想为 IDL 中定义的函数创建一个重载,如下所示:

[propget, id(7), helpstring("property MyArray")]
HRESULT MyArray([out, retval] SAFEARRAY(BSTR)* pVal);

但是在实现函数的类的头文件中,原来的声明是这样的:

STDMETHOD(get_InstalledScanningDetectors)(SAFEARRAY** pVal);

因此数组中项目的类型不再是签名的一部分。因为我正试图根据函数签名中的这种差异来创建一个重载函数。我该如何继续??

【问题讨论】:

  • 你不能那样做。 @roman 有答案。将方法重命名为不同的名称。

标签: c++ com atl idl safearray


【解决方案1】:

SAFEARRAY是distinct类型(实际上是嵌入数组相关成员的结构体),其有效元素类型不能作为签名的一部分。你可以有一个方法来返回这个或那个数组,或者你可以有两个不同名称的方法,它们都返回数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2021-11-14
    相关资源
    最近更新 更多