我正在尝试使用, swearsQByteArray获取指向数据的指针:data()
ошибка: invalid conversion from 'const char*' to 'char*' [-fpermissive] char * TempPtrBuff = ARes.data();
文档说返回char *.
为什么会出现错误?
我正在尝试使用, swearsQByteArray获取指向数据的指针:data()
ошибка: invalid conversion from 'const char*' to 'char*' [-fpermissive] char * TempPtrBuff = ARes.data();
文档说返回char *.
为什么会出现错误?
输出结果
QByteArray::data()取决于调用指定函数的方法的常量性。简单的说:因此,如果输出
QByteArray::data()与所需的输出不同,则更改方法恒定性或执行类型转换,例如,使用相同的const_cast<T>().QByteArray::data()QByteArray由于在调用此函数的对象中存在常量性而具有重载。如果使用调用结果的上下文
data()意味着可以通过接收到的指针更改数据,那么您需要使用非常量对象QByteArray并使用char*变量的类型。如果这引发了您问题中的错误,那么您将更改常量对象的数据。这表明封闭类的设计存在错误(我假设QByteArray在您的情况下它是该类的成员)。如果
data()不应该更改结果,则QByteArray可以忽略对象的常量性,而只需将其const char*用作变量即可。const_cast如果所使用的对象确实是常量,则尝试移除常量性可能会以失败告终 (UB)。与任何类型相关的示例
T:在第二种情况下尝试
obj通过引用进行修改ref会导致未定义的行为。另一种避免初始化行错误的方法
TempPtrBuff是使用auto:但是它仍然不会让你修改 const 对象。