我有一个期望WCHAR **的方法,我需要从这个方法中获取一些数据。我声明一个数组WCHAR [100]并将其传递给函数。编译器抛出此错误:
WCHAR result[100];
UINT i;
hr = SomeFunc(handle, &i, result);
错误C2664:'XXXX':无法将参数3从'WCHAR [100]'转换为'WCHAR **'
答案 0 :(得分:5)
一般来说,如果函数接受指向指针(在这种情况下为WCHAR**
),那么它将分配自己的内存并设置指向该内存的指向指针。 SomeFunc
的文档应描述这是否确实发生了什么。
如果是这种情况,那么您可能需要以下内容:
WCHAR* result = NULL;
UINT i;
hr = SomeFunc(handle, &i, &result);
如果成功,则使用result
。
当然,在这种情况下,您也很可能需要担心释放result
设置为指向的内存。 SomeFunc
的文档应明确说明这样做的必要性。