【发布时间】:2012-01-14 16:13:48
【问题描述】:
我正在尝试使用 4.7.3 开发一个 Qt 应用程序,其中涉及将 QList 写入苍蝇。
我的班级是:
class Task
{
public:
QString ta, desc;
QTime ti;
QDate da;
int pri, diff;
bool ala;
};
对应的QList是:QList任务;
我的文件是:
QFile theFile("dataBase");
QDataStream stream(&theFile);
stream.setVersion(QDataStream::Qt_4_7);
阅读:
theFile.open(QIODevice::ReadOnly);
stream >> tasks;
写:
theFile.open(QIODevice::WriteOnly);
stream << tasks;
在 Windows 上使用 Qt 4.7.3 和 GCC 4.4 工具链进行编译时,出现以下错误:
c:\QtSDK\Desktop\Qt\4.7.3\mingw\include\QtCore\qstringlist.h:46:在 c:/QtSDK/Desktop/Qt/4.7.3/mingw/include/QtCore 包含的文件中/qstringlist.h:46,
c:\QtSDK\Desktop\Qt\4.7.3\mingw\include\QtCore\qdatastream.h:250: 错误:'s >> t'中的'operator>>'不匹配
c:\QtSDK\Desktop\Qt\4.7.3\mingw\include\QtCore\qdatastream.h:-1: 在函数'QDataStream& operator
c:\QtSDK\Desktop\Qt\4.7.3\mingw\include\QtCore\qdatastream.h:263: 错误:'operatorQList::at with T = Task'
虽然存在 > 运算符的重载,但我找不到这些错误的任何原因.....
请帮助任何人,因为这是我必须制作的非常重要的应用程序
在此先感谢....
【问题讨论】:
-
请显示运算符重载,并确保从您使用它的地方可以看到定义(您是否在
Task.h文件中定义了它?) -
定义已经存在于我包含的 qdatastream.h 头文件中。它们还不够吗?
-
看起来你没有为流操作符(>)提供重载,你不能指望c++神奇地知道如何序列化你的类。
-
就是这样做的,你猜怎么着?它神奇地起作用了!谢谢克里斯和图腾!
标签: qt operator-overloading qlist