Non è possibile convertire il parametro da WCHAR [100] per WCHAR **
Domanda
Ho un metodo in attesa WCHAR **, ho bisogno di avere un po 'indietro i dati da questo metodo. Mi dichiaro un WCHAR array [100] e passando alla funzione. Il compilatore genera questo errore:
WCHAR result[100];
UINT i;
hr = SomeFunc(handle, &i, result);
Errore C2664: 'XXXX': non può convertire il parametro 3 da 'WCHAR [100]' a 'WCHAR **'
Soluzione
In generale, se una funzione richiede un puntatore ad un puntatore (WCHAR**
in questo caso), allora allocherà la propria memoria e impostare la punta a puntatore a quella memoria. La documentazione di SomeFunc
dovrebbe descrivere se questo è davvero quello che succede.
Se questo è il caso, qualcosa allora si avrebbe probabilmente bisogno come:
WCHAR* result = NULL;
UINT i;
hr = SomeFunc(handle, &i, &result);
E poi fare uso di result
in caso di successo.
Naturalmente, in questo caso si anche più probabile necessità di preoccuparsi per la memoria che deallocando result
è stato impostato su punto a. La documentazione di SomeFunc
deve esplicitamente dire che cosa è necessario fare anche questo.