Предположим, у меня была определена эта функция в 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);
таким образом, тип элементов в массиве больше не является частью подписи. так как я пытаюсь создать перегруженную функцию на основе именно этой разницы в сигнатурах функции .. как мне поступить ??
SAFEARRAY
это отдельный тип (на самом деле структура, встраивающая связанные с массивом члены), и его эффективный тип элемента не может быть частью подписи. У вас может быть один метод для возврата того или иного массива, иначе вы можете иметь два метода с разными именами, которые оба возвращают массивы.
Других решений пока нет …