Question

J'ai une méthode qui attend WCHAR **, je dois récupérer une partie des données de cette méthode. Je déclare un tableau WCHAR [100] et passer à la fonction. Le compilateur génère cette erreur:

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

erreur C2664: 'XXXX': ne peut pas convertir le paramètre 3 de 'WCHAR [100]' à 'WCHAR **'

Était-ce utile?

La solution

D'une manière générale, si une fonction prend un pointeur vers un pointeur (WCHAR** dans ce cas), il attribuera sa propre mémoire et régler la pointe à pointeur vers cette mémoire. La documentation de SomeFunc devrait décrire si cela est en effet ce qui se passe.

Si tel est le cas, alors vous auriez besoin de quelque chose comme probable:

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

Et puis faire usage de result en cas de succès.

Bien sûr, dans ce cas, vous avez également besoin le plus susceptible d'inquiéter de désaffecter la mémoire qui result a été mis à pointer. La documentation de SomeFunc devrait dire explicitement ce qu'il faut pour le faire aussi bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top