Присоединение одного QByteArray к другому QByteArray - PullRequest
0 голосов
/ 07 января 2020

Я написал следующую функцию, которая должна позволять мне добавлять некоторые входные данные QByteArray в закрытый QByteArray внутри моего класса:

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

Насколько я понимаю, функция добавления также должна принимать QByteArray в качестве параметра, но я получаю эту ошибку, когда пытаюсь скомпилировать:

ошибка: неверное преобразование из 'QByteArray *' в 'char' [-fpermissive] p_commandArray.append (array) ; ^

Что я здесь не так делаю?

Ответы [ 2 ]

4 голосов
/ 07 января 2020

Да 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 в качестве параметра.

2 голосов
/ 07 января 2020

QByteArray::append принимает const QByteArray&, но вы даете ему указатель. Дайте ему объект:

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