0

假设我在 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);

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

4

1 回答 1

1

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

于 2012-12-18T16:19:28.263 回答