【问题标题】:Appending one QByteArray to another QByteArray将一个 QByteArray 附加到另一个 QByteArray
【发布时间】:2020-04-25 04:12:24
【问题描述】:

我编写了以下函数,它应该允许我将一些输入 QByteArray 数据附加到我的类内部的私有 QByteArray:

void addQByteArray(QByteArray* array)
{
    p_commandArray.append(array);
}

我的理解是 append 函数也应该接受 QByteArray 作为参数,但是当我尝试编译时出现此错误:

错误:从‘QByteArray*’到‘char’的无效转换[-fpermissive] p_commandArray.append(array); ^

我在这里做错了什么?

【问题讨论】:

    标签: c++ qt qbytearray


    【解决方案1】:

    是的 QByteArray::append 有一个重载,您可以传递 QByteArray(更精确的是 const QByteArray&),但您尝试传递的是指向 QByteArray 的指针。

    要么

    void addQByteArray(QByteArray& array)
    {
        p_commandArray.append(array);
    }
    

    void addQByteArray(QByteArray* array)
    {
        p_commandArray.append(*array);
    }
    

    首选第一个(传递引用),因为仅当 nullptr 是有效参数时使用指针才有意义,但当您传递 nullptr 时,您不应取消引用它。

    您收到的错误消息是由于append 的另一个重载,它以char 作为参数。

    【讨论】:

    • 感谢您的反馈。它现在就像一个魅力:-)。
    • 对于 null 的情况,有默认构造的字节数组(和 .isNull()),所以几乎没有人会通过指针传递字节数组。
    • @FrankOsterfeld 我包含它的唯一原因是因为那是 OP 最初的内容
    【解决方案2】:

    QByteArray::append 接受const QByteArray&,但你给它一个指针。给它一个对象:

    void addQByteArray(QByteArray* array) {
        p_commandArray.append(*array);
        //                    ^ dereference
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-09
      • 2019-04-19
      • 2015-08-20
      • 2015-11-12
      • 2014-04-28
      • 2012-12-01
      • 2013-12-25
      • 2014-04-25
      • 2012-12-17
      相关资源
      最近更新 更多