Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 73832

QDataStream перегрузка оператора для класса QObject*

$
0
0

Здравствуйте, есть примерный код:

#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 не могу, очень надо, чтобы все заработало.

 ,


Viewing all articles
Browse latest Browse all 73832

Trending Articles