Pregunta

Tengo un método esperando WCHAR **, i necesidad de conseguir un poco de vuelta los datos de este método. Estoy declarando una matriz WCHAR [100] y que pasa a la función. El compilador lanza este error:

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

error C2664: 'XXXX': no ??puede convertir parámetro 3 'de WCHAR [100]' a 'WCHAR **'

¿Fue útil?

Solución

En términos generales, si una función toma un puntero a un puntero (WCHAR** en este caso), entonces se asignará su propia memoria y establecer al cual apunta el puntero a la memoria. La documentación de SomeFunc debe describir si esto es precisamente lo que sucede.

Si ese es el caso, entonces usted probablemente necesitará algo como:

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

Y a continuación, hacer uso de result si tiene éxito.

Por supuesto, en ese caso también más probable necesidad de preocuparse de desasignar la memoria que result se establece en el punto a. La documentación de SomeFunc debería decir explícitamente lo que es necesario hacer eso también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top