запись в файл в формате JSON

272
18 июня 2018, 20:50

Мне нужно записать в jsonObject вопросы и ответы Я делаю так:

 const Task* task = dynamic_cast<const Task*>(component);
  if (task != nullptr)
  {
      std::unique_ptr<QJsonObject> jsonObject;
      jsonObject["classType"] = ClassType::TASK;
      jsonObject["question"] = task->question();
      jsonObject["answer"] = task->answer();
      jsonObject["numPoints"] = task->numPoints();
      return jsonObject;
  }

Но выдает ошибку:

1)  error: C2678: binary '[': no operator found which takes a left-hand 
operand of type 'std::unique_ptr<QJsonObject,std::default_delete<_Ty>>' (or 
there is no acceptable conversion)
with
[
  _Ty=QJsonObject
]
Answer 1

Вы обернули json , объект в unique_ptr, тел, что бы использовать оператор [ ] необходимо достать объект, используете *.

Подводя итог, полное решение, обсуждаемое в комментариях:

#include <QJsonObject>
std::unique_ptr<QJsonObject> obj = std::unique_ptr<QJsonObject>(new QJsonObject);
(*jsonObject)["classType"] = static_cast<int>(ClassType::TASK);
(*jsonObject)["question"] = task->question();
(*jsonObject)["answer"] = task->answer();
(*jsonObject)["numPoints"] = int(task->numPoints());

Необходимо подключить правильный заголовочный файл, перед использованием указателя, инициализировать его. Использовать оператор * для получения объекта и применения к нему оператора [ ], и привести все типы к целым числам, и строкам.

READ ALSO
Запись текста в QFile

Запись текста в QFile

Какой из способов записи текста в QFile является предпочтительным?

259
Qt расшарить Custom Component из исходного кода

Qt расшарить Custom Component из исходного кода

Есть свой компонент-наследник от QWidget, полностью в исходном кодеВ Дизайнере размещаю этот компонент QMyCustomWidget на форме

234
Найти и удалить максимальный элемент в списке. (C++)

Найти и удалить максимальный элемент в списке. (C++)

Надо удалить наибольший элемент из первых n-элементов спискаКак-то не соображу как это сделать

461