Записать один обект QJsonObject в другой

197
18 июня 2018, 17:40

Мне нужно записать один обект QJsonObject в другой. Я создал jsonObject и мен нужно в него записать childJsonObject

    std::unique_ptr<QJsonObject> jsonObject = std::unique_ptr<QJsonObject>(new QJsonObject);
    for (decltype(test->numChildren()) childIndex = 0; childIndex < test->numChildren(); ++childIndex)
    {
        std::unique_ptr<QJsonObject> childJsonObject = serialise(test->child(childIndex));
        jsonObject = childJsonObject; // тут выдает ошибку
    }

ошибка:

 error: C2280: 'std::unique_ptr<QJsonObject,std::default_delete<_Ty>> &std::unique_ptr<_Ty,std::default_delete<_Ty>>::operator =(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)': attempting to reference a deleted function
with
[
   _Ty=QJsonObject
]
Answer 1

Я так понимаю, в родительский QJsonObject надо добавить массив дочерних элементов. Для этого внутри цикла нет необходимости использовать std::unique_ptr. Думаю надо сделать так:

std::unique_ptr<QJsonObject> jsonObject = std::unique_ptr<QJsonObject>(new QJsonObject);
QJsonArray children; // Массив для хранения дочерних элементов
for (decltype(test->numChildren()) childIndex = 0; childIndex < test->numChildren(); ++childIndex)
{
    //Добавляем дочерний элемент в массив
    children.push_back(serialise(test->child(childIndex)));
}
//Записываем массив как элемент родительского объекта, по ключу "children"
(*jsonObject )["children"] = children;

Единственное, я не знаю какой объект возвращает функция serialize, если она возвращает unique_ptr, то необходимо просто переписать

children.push_back(*serialise(test->child(childIndex)));

Извлекаем объект из указателя, и получаем заполненный массив.

Если же задача стояла просто в замене старого объекта новым, то:

*jsonObject = *serialise(test->child(childIndex));

или

jsonObject = std::move(serialise(test->child(childIndex)));
READ ALSO
Как получить код кириллицы?

Как получить код кириллицы?

Не могу конвертировать кириллицу в числовой код

200
Как изменить значение path через javascript?

Как изменить значение path через javascript?

Есть следующий кусок кода:

209
клиент серверный запрос

клиент серверный запрос

отправляю пользователю сообщение

216
Ошибка при добавлении рекламы

Ошибка при добавлении рекламы

Работаю в rhino, пытаюсь создать виджет с рекламой от гугла, но что-то идёт не так и появляется ошибка comgoogle

180