Frage

Ich habe eine Methode WCHAR erwarten **, muss ich von dieser Methode einige Daten zurück. Ich erklärte ein Array WCHAR [100] und an die Funktion übergeben. Der Compiler führt diesen Fehler:

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

Fehler C2664: 'XXXX': kann nicht Parameter 3 von 'WCHAR [100]' auf 'WCHAR **'

konvertieren
War es hilfreich?

Lösung

Im Allgemeinen, wenn eine Funktion einen Zeiger auf einen Zeiger (WCHAR** in diesem Fall) hat, dann wird es einen eigenen Speicher zuzuteilen und die spitzen-to Zeiger auf diesen Speicher gesetzt. Die Dokumentation von SomeFunc sollte beschreiben, wenn dies in der Tat ist das, was passiert.

Wenn das der Fall ist, dann würden Sie wahrscheinlich brauchen so etwas wie:

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

Und dann Verwendung von result wenn sie erfolgreich machen.

Natürlich in diesem Fall, dass Sie auch am ehesten Grund zur Sorge über das Aufheben von Zuweisungen der Erinnerung, dass result zu Punkt gesetzt wurde. Die Dokumentation von SomeFunc sollte ausdrücklich sagen, was notwendig ist, das zu tun, wie gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top