2017-02-22 193 views
0

當建立我的C++應用程序的構建在這行代碼C++如何在函數調用中將char *轉換爲unsigned char *?

if (!PyTuple_GetByte(poArgs, 0, &SourceCell.window_type)) 

與此錯誤

錯誤C2664失敗: 'PyTuple_GetByte':不能轉換參數3從 '字符*' 到'無符號字符*」

這是被調用的函數:

bool PyTuple_GetByte(PyObject* poArgs, int pos, unsigned char* ret); 

第三個參數&SourceCell.window_typechar類型。

有沒有辦法轉換/施放該參數的函數調用裏面像

if (!PyTuple_GetByte(poArgs, 0, reinterpret_cast<unsigned char*>(&SourceCell.window_type))) 

還是我必須用另一種方式來處理呢?

+1

試試看..... – knivil

+2

一個'static_cast'應該正常工作IIRC。 –

+1

'if(!PyTuple_GetByte(poArgs,0,reinterpret_cast (&SourceCell.window_type)))'不起作用嗎? – NathanOliver

回答

0

從錯誤中可以看出PyTuple_GetByte函數的簽名需要第unsigned char*類型的第三個參數,但是在調用時您傳遞了一個類型爲char*的變量。我認爲你在這裏有兩個選擇。

  1. 您可以更改的功能PyTuple_GetByte簽名期待一個char*參數。

  2. 您需要將輸入變量從類型char*轉換爲類型unsigned char*,然後才能將其傳遞到PyTuple_GetByte

轉換通常是這樣的:

unsigned char* convert_var = reinterpret_cast<unsigned char*>(&SourceCell.window_type); // (c++ way) 

unsigned char* convert_var = (unsigned char*)(&SourceCell.window_type); // (c way) 
相關問題