私はアーキテクチャ上でchar
がデフォルトでsigned
と解釈されています。 Qt5 documentation for QByteArrayで述べたようにQByteArrayを初期化する[-Warrowing]を避ける
私は似た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]
(のためのunsigned char *
パラメータのオーバーロードはありませんfromRawData()
)
ソルut:
組み込み関数の1つと対話する必要があるときはいつでも、私はunsigned char *
をキャストします。
const char uchar_buffer[] = {
0xFF, 0x00, 0x03
};
QByteArray::fromRawData(reinterpret_cast<const char*>(uchar_buffer), sizeof(uchar_buffer))
質問:
私はキャスト(及び狭小化のための警告を維持)することなく、任意のより簡単/まっすぐソリューションを監督しましたか?
配列を符号なしの文字として宣言し、qtと相互作用するときにキャストしますか?たとえば、character literalsを使用することをお勧めします。 –
@AndreiAndrey私はこれをしました(質問は、より簡単なキャスティングで更新しました)。キャスティングを避ける方法について考えてみませんか? – Marcus