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 **'

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top