2017-02-22 148 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) 
相关问题