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

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();
}
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.
Pourtant, les opérateurs d'injections ont été surchargé.

Dans Compte.cpp

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;
}
Dans Compte.h:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    friend QDataStream& operator << (QDataStream&, const Compte&);
    friend QDataStream& operator >> (QDataStream&, Compte&);
Je vous remercie d'avance pour votre aide précieuse.

shini86161.