Opět zdravim,
můžete mi prosím jen říct, co mám špatně? Řešil jsem to i podle ofic. dokumentace, ale stále mi to píše, že operátor >> a << má příliš mnoho parametrů a to jsem to bral přímo z příkladu v dokumentaci, takže netuším, kde je chyba nebo co tomu vadí...
#include <QObject>
#include <QMetaProperty>
#include <QDataStream>
#include <QIODevice>
struct Item
{
int cislo;
QString jmeno;
QByteArray data;
Item() { }
Item(int cislo, QString jmeno, QByteArray data)
{
this->cislo = cislo;
this->jmeno = jmeno;
this->data = data;
}
QDataStream &operator << (QDataStream &out, const Item &item)
{
out << item.cislo;
out << item.jmeno;
out << item.data;
return out;
}
QDataStream &operator >> (QDataStream &in, Item &item)
{
in >> item.cislo;
in >> item.jmeno;
in >> item.data;
return in;
}
};
Q_DECLARE_METATYPE(Item)
class Test : public QObject
{
Q_OBJECT
public:
Test(Item item, QObject *parent = 0) : QObject(parent)
{
this->item = item;
}
QByteArray serialize()
{
QByteArray out;
QDataStream stream(&out, QIODevice::WriteOnly);
stream << item;
return out;
}
static Item deserialize(QByteArray data)
{
Item item;
QDataStream stream(&data, QIODevice::ReadOnly);
stream >> item;
return item;
}
private:
Item item;
};
PS: Druhy chyb co mi to vypíše:
Chyba:C2804: binary 'operator <<' has too many parameters
Chyba:C2333: 'Item::operator <<' : error in function declaration; skipping function body
Chyba:C2679: binary '<<' : no operator found which takes a right-hand operand of type 'Item' (or there is no acceptable conversion)
dík