4.7.3を使用してQListを作成しようとしています。QDataStreamを使用して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;
のQt 4.7.3とGCC 4.4ツールチェーンを使用してWindows上でコンパイルしている間、私が取得します次のエラー:
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 \デスクトップ\のQt \ 4.7.3 \ MinGWの\含む\ QtCore \ qdatastream.h:-1:関数で' QDataStream &オペレータ< <(QDataStream &、CONST QListに&)[Tと=タスク] ':
c:\ QtSDK \ Desktop \ Qt \ 4.7.3 \ mingw \ include \ QtCore \ qdatastream。 H:263:エラー:で 'オペレータ< <' の不一致の< <((CONST QListに*)L) - > QListに::に有するT =タスク '
なお< <ための過負荷および>>演算子は、これは私が事前に
感謝をしなければならない、かなり重要なアプリ....
(あなたは 'Task.hでそれを定義したオペレータのオーバーロードを示し、定義は、あなたがそれを使用する場所から見えることを確認してください'file?) – azf
定義はすでに私が含まれているqdatastream.hヘッダーにあります。彼らは十分ではありませんか? –
ストリーム演算子(<<, >>)のオーバーロードを提供していないように見えますが、C++がクラスをシリアライズする方法を魔法のように知ることは期待できません。 – Chris