Есть класс EventData:
class EventData
{
public:
enum DataType
{
FaultType = 1,
Line = 2,
Current = 3,
Voltage = 4,
Distance = 5,
Resistance = 6
};
EventData();
EventData(quint32 id, quint64 timestamp, quint8 type);
EventData(const EventData& ev);
EventData& operator =(const EventData& ev);
quint32 id() const
{
return m_id;
}
quint64 timestamp()
{
return m_timestamp;
}
quint8 type() const
{
return m_type;
}
int valueCount() const
{
return m_values.count();
}
quint32 byteSize() const
{
return 17 + 5 * m_values.size();
}
void setValue(DataType key, const Variant& value);
bool value(DataType key, Variant& value) const;
EventData* copy()
{
return new EventData(*this);
}
friend QDataStream& operator <<(QDataStream& out,
const EventData& ev);
friend QDataStream& operator >>(QDataStream& in, EventData& ev);
private:
void initFrom(const EventData& ev);
quint32 m_id;
quint64 m_timestamp;
quint8 m_type;
typedef QHash<quint8, Variant> Values;
Values m_values;
};
QDataStream& operator <<(QDataStream& out, const EventData& ev)
{
out << ev.m_id;
out << ev.m_timestamp;
out << ev.m_type;
out << ev.m_values;
return out;
}
QDataStream& operator >>(QDataStream& in, EventData& ev)
{
in >> ev.m_id;
in >> ev.m_timestamp;
in >> ev.m_type;
in >> ev.m_values;
return in;
}
При сборке получаю
/usr/include/qt4/QtCore/qdatastream.h:383: error: no match for ‘operator<<’ (operand types are ‘QDataStream’ and ‘const Variant’) out << it.key() << it.value();
Сам вызов оператора:
EventData ev;
QDataStream in;
in.setVersion(QDataStream::Qt_4_8);
in.setByteOrder(QDataStream::LittleEndian);
QFile alarmFile(m_fileName);
if(alarmFile.open(QIODevice::ReadOnly)) {
in.setDevice(&alarmFile);
while(!in.atEnd() && in.status() == QDataStream::Ok) {
in >> ev;
}
alarmFile.close();
}
Для типа Variant
не перегружен оператор <<
.
Используйте QVariant
или реализуйте самостоятельно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Что нужно освоить(по порядку),чтобы стать системным программистом и какие качества желательны,а также сколько времени в среднем занимает?
Не знаю как написать метод emplace для листаВот мой лист: