我正在尝试使用, 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 对象。