我用a QByteArray来存储原始二进制数据.为了存储数据,我使用了QByteArray追加函数.
我喜欢使用无符号字符来表示字节,因为我认为255它更容易解释-1.但是,当我尝试将零值字节附加到a时QByteArray,如下所示:
command.append( (unsigned char) 0x00));
Run Code Online (Sandbox Code Playgroud)
编译器抱怨call of overloaded append(unsigned char) is ambiguous.据我所知,这是因为零可以解释为空指针,但为什么编译器不将unsigned char视为char,而不是想知道它是否是一个const char*?当然,我会理解编译器是否抱怨command.append(0)没有任何转换.
这两种重载需要一个类型转换-从一个unsigned char到char,其他的unsigned char到const char *.编译器不会试图判断哪一个更好,它只是告诉你使它明确.如果一个完全匹配,它将被使用:
command.append( (char) 0x00));
Run Code Online (Sandbox Code Playgroud)