Cześć!
Przerobiłem sobie typ z quint8 na enuma, żeby nie trzymać co określają wartości w define
'ach.
Problem pojawił się przy strumieniach, nawet jeśli enum ma określoną wielkość:
#include <QDebug>
#include <QDataStream>
enum TestEnum: quint8{
A = 1,
B = 2,
C = 3
};
typedef quint8 TestScalar;
#define TESTSCALAR_A 1
#define TESTSCALAR_B 2
#define TESTSCALAR_C 3
int main(){
char v[] = {3, 2, 3, 2, 1};
QDataStream stream(v);
// poprzednio
TestScalar scalar;
stream >> scalar;
qDebug() << scalar;
// nowy sposob - enum
TestEnum testEnum;
stream >> testEnum; // blad
//stream >> *reinterpret_cast<quint8*>(&testEnum); // fuj
qDebug() << testEnum;
return 0;
}
Błąd
błąd: no match for 'operator>>' (operand types are 'QDataStream' and 'TestEnum')
stream >> testEnum; // blad
~~~~~~~^~~~~~~~~~~
Jasne, QDataStream
nie ma operatora >>
dla TestEnum
i szkoda że tak to wygląda nawet jeśli enum ma określoną wielkość
Jak to ładnie zrobić?