2017-02-22 9 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_type - тип char.

Есть ли способ, чтобы преобразовать/отливать параметр в вызове функции, как

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) 
Смежные вопросы