不匹配运算符>> ...与int?

0 qt operator-keyword

我正在重载operator >>以从文件中读取一些类的变量.

我有这个奇怪的问题,很显然,它的工作原理为QString,QStringList但不为int!我已经尝试宣告我intqint16,我也收到同样的错误消息.

.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;
};
Run Code Online (Sandbox Code Playgroud)

.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;
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

error: no match for 'operator>>' in 'in >> a.Asignatura::id'
error: no match for 'operator>>' in 'in >> a.Asignatura::anyo'
error: no match for 'operator>>' in 'in >> a.Asignatura::hsCatedra'
error: no match for 'operator>>' in 'in >> a.Asignatura::hsResueltas'
error: no match for 'operator>>' in 'in >> a.Asignatura::tieneProfe'

什么?你不知道怎么读int?或者bool(基本上是int......)?

我正在使用QDataStream :: Qt_4_5(没有特殊原因),Qt 4.8.3.

正如我上面所说,我已经尝试将变量声明为qint16,qint8.没工作.我错过了什么?

Nat*_*man 6

QDataStream班是已包含了Qt头文件中的一个向前声明.因此,您可以QDataStream在类定义中使用该类型作为引用,而不会收到错误.

但是,尝试对类的实例(例如访问operator >>)执行任何操作都将导致错误,因为该定义不可用.

要解决此问题,只需#include.cpp文件顶部添加以下内容:

#include <QDataStream>
Run Code Online (Sandbox Code Playgroud)