35Fermer37
deleted2Le 04/04/2015 à 13:35
Ok. Merci.

Autre question, concernant les QDataStream. Je dois encore rater un truc, meme si maintenant j'arrive à sauver/ouvrir un fichier sans problème.

J'ai une classe Ladder qui contient un pointeur LadderData* :class Ladder { public: explicit Ladder(QString name); ~Ladder(); private: LadderData* data; };
Pour sérialiser, j'ai écrit ça qui marche :
Version qui marche
Ladder.cppQDataStream& Ladder::toStream(QDataStream& stream) const { return stream << *data; } QDataStream& operator<< (QDataStream& stream, const Ladder& ladder) { return ladder.toStream(stream); }
LadderData.cppQDataStream& operator<< (QDataStream& stream, const LadderData& data) { return stream << data.getName() << data.getUID() << data.getPlayerList(); }


J'ai voulu transformer ça, pour passer au stream le pointeur DataStream* data, et non l'objet pointé *data:
version qui marche pô :(
QDataStream& Ladder::toStream(QDataStream& stream) const { return stream << data; } QDataStream& operator<< (QDataStream& stream, const Ladder& ladder) { return ladder.toStream(stream); }
etQDataStream& operator<< (QDataStream& stream, const LadderData*& data) { return stream << data->getName() << data->getUID() << data->getPlayerList(); }

Je pensais que c'était tout simple, mais visiblement, la seconde version me crée un fichier qui déconne complètement par rapport à ce que la première version crée. A l'éditeur hexa, je n'y vois pas le contenu de data.

Pourquoi ? Vu que c'est comme ça que j'ai procédé pour lire une QList<T*>, je pensais que c'était pareil ici ><

Merci de m'expliquer ce qui se passe dans le second cas.

• Folco pas encore hyper copaing avec les références ><