2010-11-04 58 views
1

我有一個方法期待WCHAR **,我需要從此方法中獲取一些數據。我正在聲明一個數組WCHAR [100]並將它傳遞給該函數。編譯器會引發此錯誤:無法將參數從WCHAR [100]轉換爲WCHAR **

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

錯誤C2664: 'XXXX':不能從 'WCHAR [100]' 轉換參數3 'WCHAR **'

+0

不應該是'WCHAR *結果; fn(&result);'? – ruslik 2010-11-04 02:18:53

回答

5

一般而言,如果一個函數需要一個指針到一個指針(在這種情況下爲WCHAR**),那麼它將分配它自己的內存並將指向指針的內存設置爲該內存。 SomeFunc的文檔應該描述這是否確實發生了什麼。

如果是這樣的話,那麼你可能會需要這樣的東西:

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

如果成功,則利用result

當然,在這種情況下,您也很可能需要擔心釋放result被設置爲指向的內存。 SomeFunc的文檔應該明確說明做什麼也是必要的。

+2

,如果SomeFunc的文檔沒有提供給你這些信息,那麼在開發者的大方向上拋出一些沉重的東西:)。如果它是一個「標準」函數,即stdlib /字符串等。如果SomeFunc成功,您應該期望有效指針,如果不成功,則爲NULL。 – shiva 2010-11-04 02:28:21