Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > функция которая должна с json формата считывать


Автор: dimaSlon 8.6.2018, 07:51
Я написал функцию которая должна считывать  с json формата 
Код

std::unique_ptr<Component> Archiver::deserialise(const QJsonObject& jsonData)
{
    Test test;
    if (jsonData["classType"].operator==( ClassType::TEST))
    {
        test.setName(jsonData["name"].toString());
        for (decltype(jsonData.size()) childIndex = 0; childIndex < jsonData.size(); ++childIndex)
        {
            std::unique_ptr<Component> childComponent = deserialise(jsonData["children"]);
            test.addChild(childComponent);
        }
        std::unique_ptr<Test> component;
        component.operator =(test);
        return component;
    }
    return nullptr;
}

Но я столкнулся с  проблемами и ошибками. Нужна ваша помощь
Ошибки:
1)
Код

std::unique_ptr<Component> childComponent = deserialise(jsonData["children"]);

ошибка :  'std::unique_ptr<Component,std::default_delete<_Ty>> Archiver::deserialise(const QJsonObject &)': cannot convert argument 1 from 'QJsonValue' to 'const QJsonObject &'
2)
Код

component.operator =(test);

ошибка: error: C2664: 'std::unique_ptr<Test,std::default_delete<_Ty>> &std::unique_ptr<_Ty,std::default_delete<_Ty>>::operator =(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)': cannot convert argument 1 from 'Test' to 'std::nullptr_t'

Автор: ss 8.6.2018, 19:27
строка 4
Цитата

if (jsonData["classType"].operator==( ClassType::TEST))


if(ClassType(jsonData.value("classType").toInt()) == ClassType::TEST)


строка 9 . jsonData["children"].toObject().   указать тип 

строка 12
Цитата

std::unique_ptr<Test> component;
        component.operator =(test);


std::unique_ptr<Test> component(new Test());

!Скорее всего component уничтожит Test т.к. component уничтожится сам. Возвращать можно new Test();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)