我有一个期待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/