我正在重载operator >>以从文件中读取一些类的变量.
我有这个奇怪的问题,很显然,它的工作原理为QString,QStringList但不为int!我已经尝试宣告我int的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;
};
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.没工作.我错过了什么?
该QDataStream班是已包含了Qt头文件中的一个向前声明.因此,您可以QDataStream在类定义中使用该类型作为引用,而不会收到错误.
但是,尝试对类的实例(例如访问operator >>)执行任何操作都将导致错误,因为该定义不可用.
要解决此问题,只需#include在.cpp文件顶部添加以下内容:
#include <QDataStream>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2491 次 |
| 最近记录: |