繁体   English   中英

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

[英]C++ how to convert from char * to unsigned char * in function call?

在构建我的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)))

还是我必须以其他方式处理它?

由于该错误, 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM