有一个使用 QDataStream 从文件加载数据的函数:
void tgTableModel::Load(QString &path)
{
QFile file(path);
if(file.open(QIODevice::ReadOnly))
{
m_ptargetList->clear();
QList<target> list; //target моя структура
QDataStream in(&file);
in.setVersion(QDataStream::Qt_5_7);
in >> list;
m_ptargetList = &list;
file.close();
}
}
为了让它工作,我为目标结构定义了函数:
struct target{
QString name;
QString description;
int priority;
QDate deadline;
Status::Value ready;
};
QDataStream &operator << (QDataStream &stream, const target &tg)
{
stream << tg.name;
stream << tg.description;
stream << tg.priority;
stream << tg.deadline;
stream << tg.ready;
return stream;
}
QDataStream &operator >> (QDataStream &stream, target &tg)
{
stream >> tg.name;
stream >> tg.description;
stream >> tg.priority;
stream >> tg.deadline;
stream >> tg.ready;
return stream;
}
还为工作流定义了函数>> tg.ready;和流 << tg.ready;
class Status: public QObject
{
Q_OBJECT
public:
explicit Status(QObject * parent = nullptr): QObject(parent){}
enum /*class*/ Value{in_waiting, deferred, completed, in_process, nVariant};
Q_ENUM(Value)
friend QDataStream &operator << (QDataStream &stream, const Status::Value &val)
{
stream << (int)val;
return stream;
}
friend QDataStream &operator >> (QDataStream &stream, Status::Value &val)
{
stream >> (int)val; // вот тут выбивает 4 ошибки!!!
return stream;
}
};
但在指示的位置,无论我做什么,它都会出现 4 个相同的错误:“...错误:C2679:二进制'>>':找不到采用'int'类型的右手操作数的运算符(或者没有可接受的转换)”
请帮我解决它。提前致谢!
这就是它的编译方式。