无法将参数从WCHAR [100]转换为WCHAR**

Sta*_*nly 1 c++ wchar

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

WCHAR result[100];
UINT i;
hr = SomeFunc(handle, &i, result);
Run Code Online (Sandbox Code Playgroud)

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

The*_*ish 5

一般来说,如果函数接受指向指针的指针(WCHAR**在这种情况下),那么它将分配自己的内存并设置指向该内存的指向指针.的文件SomeFunc应说明,如果这确实发生了什么.

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

WCHAR* result = NULL;
UINT i;
hr = SomeFunc(handle, &i, &result);
Run Code Online (Sandbox Code Playgroud)

然后利用result如果成功.

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

  • 如果SomeFunc的文档没有为您提供该信息,请在开发人员的总体方向上投入大量的东西:).如果它是一个"标准"函数,即stdlib/string等..如果SomeFunc成功,你应该期待有效的指针,如果没有则你应该是NULL. (2认同)