Я хочу сохранить некоторую информацию в формате JSON.
Рассмотрим следующий фрагмент кода.У меня есть ошибка в методе save()
, где переменная типа enum class
назначена как QJsonValue
.
Как я могу использовать enum class
в этой ситуации?
Спасибо
class MyClass : public QObject
{
Q_OBJECT
public:
enum class Status { Undefined, S1, S2 };
Q_ENUM(Status)
explicit MyClass(QObject *parent = nullptr);
void save(QString filename) {
//...
QJsonObject jsonObj;
jsonObj["id"] = m_id;
jsonObj["status"] = m_status; //<-- Error: no known conversion from 'MyClass::Status' to 'const QJsonValue' for 1st argument
//...
//Save QJsonDocument into target file
}
private:
QString m_id;
MyClass::Status m_status;
//...
};
Примечание: Если я заменю enum class
на старую enum
этот код будет работать нормально.Но с enum class
он не будет скомпилирован.
Подробнее: См. JSON Save Game Example
в источнике Qt.Он имеет класс с именем Character
и традиционный enum
с именем ClassType
.Попробуйте изменить enum
на enum class
.Это не будет работать.Как заставить это работать?