【发布时间】:2018-02-17 11:08:43
【问题描述】:
我在一个架构上,默认情况下char 被解释为signed。
我构造了一个类似于Qt5 documentation for QByteArray 中提到的char array:
const char char_buffer[] = {
0xFF, 0x00, 0x03
};
当我后来分别调用QByteArray::fromRawData(char_buffer)QByteArray(char_buffer)时,编译器会报错:
error: narrowing conversion of ‘255’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
(fromRawData() 没有 unsigned char * 参数重载)
解决方案:
每当我必须与其中一个内置函数进行交互时,我都会发送unsigned char *。
const char uchar_buffer[] = {
0xFF, 0x00, 0x03
};
QByteArray::fromRawData(reinterpret_cast<const char*>(uchar_buffer), sizeof(uchar_buffer))
问题:
我是否监督了任何更简单/直接的解决方案而无需强制转换(并保持缩小警告)?
【问题讨论】:
-
声明数组为 unsigned char 并在与 qt 交互时强制转换?
-
@AndreiAndrey 我这样做了(现在用更简单的铸造更新了问题)。你能想到如何避免强制转换吗?