我正在重载operator >>
以从文件中读取一些类的变量。
我有这个奇怪的问题,显然,它适用于QString
, QStringList
,但不适用于int
! 我已经尝试将我的声明int
为 as qint16
,并且收到相同的错误消息。
.h
包含:
enum Anyo { Primero, Segundo, Tercero, Cuarto, Quinto, Sexto, ANYOS };
class Asignatura
{
public:
Asignatura();
Asignatura(const QString & nom, Anyo a, int hsCat);
friend QDataStream& operator<<(QDataStream &out, const Asignatura &a);
friend QDataStream& operator>>(QDataStream &in, Asignatura &a);
...
private:
static int idGeneral;
int id;
QString nombre;
QString nombreProfe;
Anyo anyo;
int hsCatedra;
int hsResueltas;
bool tieneProfe;
};
.cpp
包含:
QDataStream& operator >>(QDataStream &in, Asignatura &a)
{
in >> a.id;
in >> a.nombre;
in >> a.nombreProfe;
in >> a.anyo;
in >> a.hsCatedra;
in >> a.hsResueltas;
in >> a.tieneProfe;
return in;
}
我收到的错误是:
错误:'in >> a.Asignatura::id' 中的 'operator>>' 不匹配 错误:'in >> a.Asignatura::anyo' 中的 'operator>>' 不匹配 错误:'in >> a.Asignatura::hsCatedra' 中的 'operator>>' 不匹配 错误:'in >> a.Asignatura::hsResueltas' 中的 'operator>>' 不匹配 错误:'in >> a.Asignatura::tieneProfe' 中的 'operator>>' 不匹配
什么?你不知道怎么读int
?还是一个bool
(基本上是一个int
......)?
我正在使用 QDataStream::Qt_4_5 (无特殊原因),Qt 4.8.3。
正如我上面所说,我已经尝试将变量声明为 qint16、qint8。没用。我错过了什么?