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

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

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

最佳答案

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

如果真是这样,那么您可能需要类似以下内容:

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

如果成功,然后使用result

当然,在这种情况下,您还很可能需要担心释放result设置为指向的内存。 SomeFunc的文档中也应明确说明执行此操作的必要条件。

关于c++ - 无法将参数从WCHAR [100]转换为WCHAR **,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4093353/

10-10 21:28
查看更多