1

我有一个需要 WCHAR** 的方法,我需要从这个方法中取回一些数据。我正在声明一个数组 WCHAR[100] 并将其传递给函数。编译器抛出此错误:

WCHAR result[100];
UINT i;
hr = SomeFunc(handle, &i, result);

错误 C2664:“XXXX”:无法将参数 3 从“WCHAR [100]”转换为“WCHAR **”

4

1 回答 1

5

一般来说,如果一个函数接受一个指向指针的指针(WCHAR**在这种情况下),那么它将分配自己的内存并将指向的指针设置为该内存。的文档SomeFunc应该描述这是否确实发生了。

如果是这种情况,那么您可能需要以下内容:

WCHAR* result = NULL;
UINT i;
hr = SomeFunc(handle, &i, &result);

然后result如果成功就使用。

当然,在这种情况下,您很可能还需要担心释放result设置为指向的内存。的文档也SomeFunc应该明确说明这样做的必要性。

于 2010-11-04T02:25:02.373 回答