我尝试了GetSafeArrayPtr()
方法,该方法返回一个类型定义为:
typedef /* [wire_marshal] */ SAFEARRAY *LPSAFEARRAY;
我以为我可以直接将它分配给SAFEARRAY *变量,但编译器会给出这个错误:
我发现这很奇怪。我在这里做错了什么?错误C2440:'=':无法从'LPSAFEARRAY *'转换为'SAFEARRAY *'
PS:我在C ++ / CLI dll中执行此操作(如果这有任何相关性)。
答案 0 :(得分:1)
LPSAFEARRAY *
是指向SAFEARRAY *
的指针,所以你需要一个双指针,如下所示:
{
CComSafeArray<VARIANT> vArray;
SAFEARRAY** pArray;
pArray = vArray.GetSafeArrayPtr();
}
然后你可以通过取消引用从SAFEARRAY *
返回的指针将CComSafeArray
传递给需要它作为参数的函数:
DummyFunction(*pArray);