将一个 QByteArray 附加到另一个 QByteArray

Appending one QByteArray to another QByteArray

我编写了以下函数,它应该允许我将一些输入 QByteArray 数据附加到我 class:

中的私有 QByteArray
void addQByteArray(QByteArray* array)
{
    p_commandArray.append(array);
}

我的理解是 append 函数也应该接受 QByteArray 作为参数,但是我在尝试编译时遇到了这个错误:

error: invalid conversion from ‘QByteArray*’ to ‘char’ [-fpermissive] p_commandArray.append(array); ^

我做错了什么?

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

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

是的 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 作为参数。