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 に答える