Bonjour à tous,
Je me tourne vers vous en espérant résoudre un problème que je n'arrive pas à résoudre depuis quelques jours.
Des amis et moi avons un projet sur Developpez, nous réalisons un jeu en C++.
Et nous tentons de sauvegarder le compte de l'utilisateur, ainsi que ses personnages.
C'est ici que nous nous retrouvons bloqué.
Après quelques tests, il s'avère que le code fonctionne très bien, pour des objets Qt. Mais cet objet est une instance d'une classe créée par nous-même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 void Save_load::load_Game_Test() { qDebug() << "Chargement"; QFile f("Sauvegarde.bin"); if(!f.exists()) { qDebug() << "Erreur : fichier inexistant"; } else { qDebug() << "Fichier existe"; f.open(QIODevice::ReadOnly); QDataStream binStream(&f); // On spécifie la version de l'encodage qui va être utilisé par notre objet QDataStream binStream.setVersion(QDataStream::Qt_4_4); // On écrit nos differents objet dans le fichier Compte *compte = new Compte; binStream >> compte; f.close(); } } void Save_load::save_Game(Compte compte) { qDebug() << "Sauvegarde"; QFile file("Sauvegarde.bin"); // Ouverture du fichier en écriture seule if (!file.open(QIODevice::WriteOnly)) return; // Création de notre QDataStream à partir de notre fichier précédemment ouvert QDataStream binStream(&file); // On spécifie la version de l'encodage qui va être utilisé par notre objet QDataStream binStream.setVersion(QDataStream::Qt_4_4); // On écrit nos differents objet dans le fichier binStream << compte; // On ferme le fichier file.close(); }
Pourtant, les opérateurs d'injections ont été surchargé.
Dans Compte.cpp
Dans Compte.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 QDataStream& operator << (QDataStream& out, Compte& compte) { out << compte.getUsername(); // le username est un QString out << compte.getPassword(); // le password aussi return out; } QDataStream& operator >> (QDataStream& in, Compte& compte) { QString temp; in >> temp; compte.setUsername(temp); in >> temp; compte.setPassword(temp); return in; }
Je vous remercie d'avance pour votre aide précieuse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 friend QDataStream& operator << (QDataStream&, const Compte&); friend QDataStream& operator >> (QDataStream&, Compte&);
shini86161.
Partager