【问题标题】:Cannot convert parameter from WCHAR[100] to WCHAR**无法将参数从 WCHAR[100] 转换为 WCHAR**
【发布时间】:2011-05-04 20:21:48
【问题描述】:

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

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

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

【问题讨论】:

  • 不应该是WCHAR* result; fn(&result);吗?

标签: c++ wchar


【解决方案1】:

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

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

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

如果成功则使用result

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

【讨论】:

  • 如果 SomeFunc 的文档没有为您提供该信息,请在开发人员的总体方向上投入一些沉重的东西:)。如果它是一个“标准”函数,即 stdlib/string 等。如果 SomeFunc 成功,你应该期待有效的指针,如果不是,则为 NULL。
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 2020-09-08
  • 2012-04-03
  • 1970-01-01
  • 2018-06-02
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多