Historique des modifications - Message

Message #3631

Sujet: Système de sauvegarde: Irrlicht Vs POO


Type Date Auteur Contenu
Dernière modification 05-03-2008 13:36:58 dark calculator
salut

Premièrement je me demande pourquoi tu utilise floor pour X et Y et pas pour Z dans
 sauvegarde << floor(posCam.X) << "\
" << ceil(posCam.Y) << "\
" << floor(posCam.Z) << endl;

et pourquoi ne pas mettre endl partout a la place de "\
" enfin le probleme ne vient surement pas de la mais je trouve sa stressant.

Enfin sinon j'ai vu un problème dans ton code dans le constructeur de Sauvegarde qui vient d'une mauvais maîtrise des pointeurs. En effet tu passe un argument des pointeurs au constructeur puis ensuite tu sauvegarde ces pointeurs dans les variables de la classe sauvegarde mais pas les données. Bon je vais pas faire un cours sur les pointeurs mais en gros faut mettre les donnée dans la classe sauvegarde car tu n'est pas sur que les données soit pas détruite dans main(et actuellement les pointeurs pointe vers les données crée dans main).

Plusieurs solutions s'offre a toi : ne plus utilisé les pointeurs ou utiliser le tas : new.
En gros moi je ferais sa :

//Sauvegarde.h
class Sauvegarde
{
    public:

    Sauvegarde(char*, irr::scene::ICameraSceneNode*);
    ~Sauvegarde();
    void Sauvegarde::Save();

    private:

    irr::scene::ICameraSceneNode* camerafps;
    char* Fichier;


};

//sauvegarde.cpp
Sauvegarde::Sauvegarde(char* fichier, irr::scene::ICameraSceneNode* Camerafps)
{
    Fichier = new (*fichier);
    camerafps = new (*Camerafps);
}

Sauvegarde::~Sauvegarde()
{
    delete Fichier;
    delete camerafps;
}

void Sauvegarde::Save()
{
        core::vector3df posCam;
        posCam = camerafps->getPosition();
        ofstream sauvegarde(Fichier, ios::out | ios::trunc);
        if(sauvegarde)
        {
           sauvegarde << floor(posCam.X) << "\
" << ceil(posCam.Y) << "\
" << floor(posCam.Z) << endl;
        }
        sauvegarde.close();
}

Voila je ne sais pas si cela solutionnera ton problème mais je le pense.

si tu a une erreur de compilation pour les lignes avec les new enlève les * devant fichier et Camerafps car je ne sais plus si on doit mettre un pointeur ou la donné en argument.

a+

dark calculator
Création du message 05-03-2008 13:32:11 dark calculator
salut

Premièrement je me demande pourquoi tu utilise floor pour X et Y et pas pour Z dans
 sauvegarde << floor(posCam.X) << "\
" << ceil(posCam.Y) << "\
" << floor(posCam.Z) << endl;

et pourquoi ne pas mettre endl partout a la place de "\
" enfin le probleme ne vient surement pas de la mais je trouve sa stressant.

Enfin sinon j'ai vu un problème dans ton code dans le constructeur de Sauvegarde qui vient d'une mauvais maîtrise des pointeurs. En effet tu passe un argument des pointeurs au constructeur puis ensuite tu sauvegarde ces pointeurs dans les variables de la classe sauvegarde mais pas les données. Bon je vais pas faire un cours sur les pointeurs mais en gros faut mettre les donnée dans la classe sauvegarde car tu n'est pas sur que les données soit pas détruite dans main(et actuellement les pointeurs pointe vers les données crée dans main).

Plusieurs solutions s'offre a toi : ne plus utilisé les pointeurs ou utiliser le tas : new.
En gros moi je ferais sa :

//Sauvegarde.h
class Sauvegarde
{
    public:

    Sauvegarde(char*, irr::scene::ICameraSceneNode*);
    ~Sauvegarde();
    void Sauvegarde::Save();

    private:

    irr::scene::ICameraSceneNode* camerafps;
    char* Fichier;


};

//sauvegarde.cpp
Sauvegarde::Sauvegarde(char* fichier, irr::scene::ICameraSceneNode* Camerafps)
{
    Fichier = new (*fichier);
    camerafps = new (*Camerafps);
}

Sauvegarde::~Sauvegarde()
{
    delete Fichier;
    delete camerafps;
}

void Sauvegarde::Save()
{
        core::vector3df posCam;
        posCam = camerafps->getPosition();
        ofstream sauvegarde(Fichier, ios::out | ios::trunc);
        if(sauvegarde)
        {
           sauvegarde << floor(posCam.X) << "\
" << ceil(posCam.Y) << "\
" << floor(posCam.Z) << endl;
        }
        sauvegarde.close();
}

Voila je ne sais pas si cela solutionnera ton problème mais je le pense.

si tu a une erreur de compilation pour les lignes avec les new enlève les * devant fichier et Camerafps car je ne sais plus si on doit mettre un pointeur ou la donné en argument.

a+

dark calculator

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
157 invités en ligne
membre en ligne: -
RSS Feed