2012-01-14 7 views
2

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 =タスク '

なお< <ための過負荷および>>演算子は、これは私が事前に
感謝をしなければならない、かなり重要なアプリ....

+0

(あなたは 'Task.hでそれを定義したオペレータのオーバーロードを示し、定義は、あなたがそれを使用する場所から見えることを確認してください'file?) – azf

+0

定義はすでに私が含まれているqdatastream.hヘッダーにあります。彼らは十分ではありませんか? –

+0

ストリーム演算子(<<, >>)のオーバーロードを提供していないように見えますが、C++がクラスをシリアライズする方法を魔法のように知ることは期待できません。 – Chris

答えて

2
あるとして、誰でも助けてください

.....私はこれらのエラーのために何らかの理由を見つけるカント、存在します

オペレータを自分で定義する必要があります。このようなもの:

.hファイル:

class myClass{ 
public: 
    QString name; 
    QString gender; 
    QDate birthDay; 
    QString job; 
    QString address; 
    int phoneNo; 
}; 

QDataStream &operator <<(QDataStream &stream, const myClass &myclass); 
QDataStream &operator >>(QDataStream &stream, myClass &myclass); 

.cppファイル:

QDataStream &operator <<(QDataStream &stream, const myClass &myclass) 
{ 
    stream<<myclass.address; 
    stream<<myclass.birthDay; 
    stream<<myclass.gender; 
    stream<<myclass.job; 
    stream<<myclass.name; 
    stream<<myclass.phoneNo; 
    return stream; 
} 

QDataStream &operator >>(QDataStream &stream, myClass &myclass) 
{ 
    stream>>myclass.address; 
    stream>>myclass.birthDay; 
    stream>>myclass.gender; 
    stream>>myclass.job; 
    stream>>myclass.name; 
    stream>>myclass.phoneNo; 
    return stream; 
} 
関連する問題