C ++如何在函数调用中将char *转换为unsigned char *?

时间:2017-02-22 13:12:33

标签: c++ casting char unsigned-char

构建我的C ++应用程序时,此代码行的构建失败

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

出现此错误

  

错误C2664:'PyTuple_GetByte':无法转换参数3   'char *'到'unsigned char *'

这是被调用的函数:

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)))

还是我必须以另一种方式处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

从错误中,PyTuple_GetByte函数的签名期望第unsigned char*个类型的第三个参数,但是在调用时传递了类型为char*的变量。我认为你有两种选择。

  1. 您可以更改功能PyTuple_GetByte的签名,以期望char*参数。

  2. 您需要将输入变量从char*类型转换为unsigned char*类型,然后才能将其传递到PyTuple_GetByte

  3. 转换通常是这样的:

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

    unsigned char* convert_var = (unsigned char*)(&SourceCell.window_type); // (c way)