如何根据数组参数项类型重载IDL中的函数?

时间:2012-12-18 10:29:18

标签: c++ com atl idl safearray

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

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

1 个答案:

答案 0 :(得分:1)

SAFEARRAY是不同的类型(实际上是嵌入数组相关成员的结构),其有效元素类型不能是签名的一部分。您可以使用单个方法返回此数组或该数组,否则您可以使用两个具有不同名称的方法返回数组。