Ich versuche, Bitfelder Struktur in Datei schreiben und dann lesen.Schreiben/Lesen Bitfelder Struktur zu/von Datei
Zum Beispiel:
typedef struct{
ushort
a:4,
b:4,
c:4,
d:4;
} teststruct;
Ich versuche zu schreiben und es wie dieser
QDataStream &operator <<(QDataStream &st, const teststruct &a)
{
st <<a.a << a.b << a.c << a.d;
return st;
}
QDataStream &operator >>(QDataStream &st, teststruct &a)
{
st >>a.a >> a.b >> a.c >> a.d;
return st;
}
teststruct str1, str2;
str1.a = 1;
str1.b = 0;
str1.c = 1;
str1.d = 0;
QFile f("testfile");
f.open(QFile::WriteOnly);
QDataStream st(&f);
st << str1;
f.close();
f.open(QFile::ReadOnly);
QDataStream st(&f);
st >> str2;
f.close();
Aber in QDataStream::operator>>
bekam las ich einen Fehler
error: cannot bind bitfield 'a.teststruct::a' to 'quint16& {aka short unsigned int&}'
Was kann ich mit >>
tun Operator oder vielleicht gibt es eine andere Möglichkeit, Daten in meine Struktur zu lesen?
Sie können keine nicht-const Verweis auf eine bit- haben Feld. 'QDataStream :: operator >> (quint16 & i)' nimmt den Parameter als eine nicht-konstante Referenz (wie die Fehlermeldung, die Sie erhalten, zeigt), deshalb erhalten Sie den Fehler. – thuga