【发布时间】:2012-08-28 18:16:51
【问题描述】:
我使用QByteArray 来存储原始二进制数据。我使用QByteArray的追加函数来存储数据。
我喜欢使用无符号字符来表示字节,因为我认为 255 比 -1 更容易解释。但是,当我尝试将零值字节附加到 QByteArray 时,如下所示:
command.append( (unsigned char) 0x00));
编译器向call of overloaded append(unsigned char) is ambiguous 抱怨。据我了解,这是因为零可以解释为空指针,但是为什么编译器不将 unsigned char 视为 char,而不是想知道它是否是 const char*?当然,如果编译器在没有任何强制转换的情况下抱怨 command.append(0),我会理解。
【问题讨论】:
-
(char)和(const char *)是command.append的唯一重载吗? -
如果您传递的是文字
0(否则无法转换为const char*),为什么不将其转换为适当的类型? -
@peachykeen:还有更多的重载,特别是 (const QByteArray&) 和 (const QString&)。
-
@DavidRodríguez-dribeas:我会的,但我想知道为什么它是必要的。