0

GetSafeArrayPtr()typedef が次のように定義されている LPSAFEARRAY* を返すメソッドを試しました。

typedef /* [wire_marshal] */ SAFEARRAY *LPSAFEARRAY;

これを SAFEARRAY* 変数に直接割り当てることができると思っていましたが、コンパイラは次のエラーを出します:

エラー C2440: '=': 'LPSAFEARRAY *' から 'SAFEARRAY *' に変換できません

これは奇妙だと思いました。ここで何が間違っていますか?

PS: 私はこれを C++/CLI dll 内で行っています (関連性がある場合)。

4

1 に答える 1

2

LPSAFEARRAY *へのポインターSAFEARRAY *なので、次のように二重ポインターが必要です。

{
    CComSafeArray<VARIANT> vArray;
    SAFEARRAY** pArray;
    pArray = vArray.GetSafeArrayPtr();
}

そして、SAFEARRAY *から返されたポインタを逆参照することで、引数としてそれを必要とする関数に を渡すことができますCComSafeArray:

DummyFunction(*pArray);
于 2013-09-03T08:05:24.937 に答える