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は別個の型 (実際には、配列に関連するメンバーを埋め込んだ構造体) であり、その有効な要素型を署名の一部にすることはできません。この配列またはその配列を返す単一のメソッドを使用することも、配列を返す異なる名前の 2 つのメソッドを使用することもできます。

于 2012-12-18T16:19:28.263 に答える