假设我在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);
因此数组中项目的类型不再是签名的一部分。因为我试图根据函数签名中的这个差异创建一个重载函数..我该如何继续?
答案 0 :(得分:1)
SAFEARRAY
是不同的类型(实际上是嵌入数组相关成员的结构),其有效元素类型不能是签名的一部分。您可以使用单个方法返回此数组或该数组,否则您可以使用两个具有不同名称的方法返回数组。