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 ><