2010-11-04 13 views
1

J'ai une méthode qui attend WCHAR **, j'ai besoin de récupérer des données de cette méthode. Je déclare un tableau WCHAR [100] et le passe à la fonction. Le compilateur génère cette erreur:Impossible de convertir le paramètre de WCHAR [100] en WCHAR **

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

+0

Ce ne devrait pas être le résultat du 'WCHAR *; fn (& résultat); '? – ruslik

Répondre

5

D'une manière générale, si une fonction prend un pointeur à un pointeur (WCHAR** dans ce cas) alors il va allouer sa propre mémoire et mettre le pointeur vers cette mémoire. La documentation de SomeFunc devrait décrire si c'est effectivement ce qui se passe.

Si tel est le cas, alors vous aurait probablement besoin de quelque chose comme:

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

Et puis faire si réussie utilisation de result.

Bien sûr, dans ce cas, vous devrez probablement vous soucier de désallouer la mémoire à laquelle result était destiné. La documentation de SomeFunc devrait explicitement dire ce qui est nécessaire pour faire cela aussi.

+2

et si la documentation de SomeFunc ne vous fournit pas cette information, jetez quelque chose de lourd dans la direction générale du développeur :). S'il s'agit d'une fonction "standard", c'est-à-dire stdlib/string etc., vous devriez pouvoir attendre un pointeur valide, si SomeFunc réussit, et NULL sinon. – shiva

Questions connexes