파일에 비트 필드 구조를 쓰고 읽는 중입니다. 예를 들어파일에서 /로 비트 필드 구조 쓰기/읽기
:
typedef struct{
ushort
a:4,
b:4,
c:4,
d:4;
} teststruct;
내가 쓰고 내가 >>
로 할 수있는
error: cannot bind bitfield 'a.teststruct::a' to 'quint16& {aka short unsigned int&}'
이것이
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();
처럼 읽을 수는 있지만 QDataStream::operator>>
에서 나는 오류를 가지고 시도 연산자 또는 어쩌면 내 구조에 데이터를 읽는 다른 방법이 있습니까?
당신은의 비트에 const가 아닌 참조를 가질 수 없습니다 들. 'QDataStream :: operator >> (quint16 & i)'는 매개 변수를 const가 아닌 참조로 사용합니다 (오류 메시지가 표시하는 것처럼). 그래서 오류가 발생합니다. – thuga