Здравствуйте, есть примерный код:
#include <QCoreApplication>
#include <qobject.h>
#include <qmetatype.h>
#include <qdatastream.h>
#include <qvariant.h>
QDataStream &operator <<(QDataStream &out, const QObject *object)
{
Q_UNUSED(object);
return out;
}
QDataStream &operator >>(QDataStream &in, QObject *object)
{
Q_UNUSED(object);
return in;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// регестрируем
qRegisterMetaTypeStreamOperators<QObject*>();
QDataStream stream;
QObject* ob = new QObject();
QVariant var;
var.setValue(ob);
var.save(stream); // при отладке должные попасть в перегрузку '<<', но не попадаем
return 0;
}
Делаем перегрузку, регестрируем, радуемся отсутствию ошибок, но при отладке в перегруженные функции не попадаем.
Хотя, если заменить QObject, в следующих строках на имя любого своего класса, все работает как надо (то есть, код - рабочий):
- QDataStream &operator <<(QDataStream &out, const QObject *object)
- QDataStream &operator >>(QDataStream &in, QObject *object)
- qRegisterMetaTypeStreamOperators<QObject*>();
Подозреваю, что загвоздка в перегрузке операторов именно под класс QObject - как можно исхитрится, чтобы это дело обойти и все заработало?
Не использовать таким образом класс QObject не могу, очень надо, чтобы все заработало.