gpt4 book ai didi

c++ - 将 "unsigned char"传递给需要 char 或 const char* 的重载函数会导致歧义

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:28 25 4
gpt4 key购买 nike

我正在使用 QByteArray 来存储原始二进制数据。为了存储数据,我使用了 QByteArray 的附加函数。

我喜欢使用无符号字符来表示字节,因为我认为 255-1 更容易解释。但是,当我尝试将零值字节附加到 QByteArray 时,如下所示:

command.append( (unsigned char) 0x00));

编译器提示 重载 append(unsigned char) 的调用不明确。据我了解,这是因为零可以解释为空指针,但是为什么编译器不将 unsigned char 视为 char,而不是想知道它是否是 const char*?当然,如果编译器在没有任何转换的情况下提示 command.append(0),我会理解。

最佳答案

两个重载都需要类型转换 - 一个从 unsigned charchar,另一个从 unsigned charconst char * 。编译器不会试图判断哪个更好,它只是告诉你让它明确。如果一个是完全匹配的,它将被使用:

command.append( (char) 0x00));

关于c++ - 将 "unsigned char"传递给需要 char 或 const char* 的重载函数会导致歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com