#0 

09-01-2010 14:53:59

Mat3910
Petit nouveau
Date d'inscription: 09-01-2010
Messages: 1

Bonjour, j'ai un petit programme avec un vaisseau, j'ai une fonction pour le faire avancer : quand je compile, il marche. Seulement quand je lance le programme, pour tester, il y un message d'erreur.

"Irrlicht.exe à rencontré un problème..."

Après il demande "envoyer" ; "ne pas envoyer". (J'ai envoyé ; J'déconne !)

Alors je sais pas trop quoi faire, je pense que c'est irrlicht qu'est pas bon, mais je me doute que c'est aussi moi qui ai fait une mauvaise manip.
voila le code de ma classe.

le .cpp

Code:

#include "Vaisseau.h"

Vaisseau::Vaisseau(irr::scene::ISceneManager *sceneManager)
{
    m_position.X = 0.0f;
    m_position.Y = 1000.0f;
    m_position.Z = 40.0f;

    irr::scene::IAnimatedMesh* modele = sceneManager->getMesh("vaisseau.3ds");
    irr::scene::IAnimatedMeshSceneNode* m_Nvaisseau = sceneManager->addAnimatedMeshSceneNode(modele);
    m_Nvaisseau->setPosition(m_position);
}

void Vaisseau::avance()
{
    m_Nvaisseau->setPosition(m_position);
}

et le .h

Code:

#ifndef VAISSEAU_H_INCLUDED
#define VAISSEAU_H_INCLUDED

#include <irr/irrlicht.h>

class Vaisseau
{
    public:
    Vaisseau(irr::scene::ISceneManager *sceneManager);
    void avance();

    private:
    //Le modele qu'on va controler.
    irr::scene::IAnimatedMeshSceneNode *m_Nvaisseau;
    irr::core::vector3df m_position;
};

#endif // VAISSEAU_H_INCLUDED

J'ai tout essayé, mais le fait de toucher à m_Nvaisseau dans une autre méthode que le constructeur génère une erreur quand le programme se lance. Pourtant à la compilation, il ne dit rien.

Hors ligne


#1 

09-01-2010 15:21:31

TUpac
Habitué
Date d'inscription: 08-09-2009
Messages: 387
Corrections: 1

Désolé mais tu ne pourrais pas lancer un débug pour trouver la ligne qui pose problème? Car un rapport d'erreur grosoft ne donne pas d'infos sur ton plantage ...


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#2 

09-01-2010 15:48:40

Ilovechocolat
Abonné
Date d'inscription: 07-10-2009
Messages: 125

A tu bien mis tes dll dans le dossier de l'exécutable, pareil pour tes modèles et textures ?
Sinon, tu doit stocker tes objets dans des variables et non des pointeurs (sauf si tu utilise l'allocation dynamique).
par exemple si tu a une fonction qui fait.

Code:

Vaisseau* declarerVaisseau ();
{
    Vaisseau test;
    return &test;
}

et que lors de l'appel de la fonction tu fait

Code:

Vaisseau* pointeur = declarerVaisseau ();

ça peut provoquer ce type d'erreur car test est désaloué a la fin de la fonction.

Dans ce cas la une solution serait de faire :

Code:

Vaisseau declarerVaisseau ();
{
    Vaisseau test;
    return test;
}

Code:

Vaisseau objet = declarerVaisseau ();

ou

Code:

Vaisseau* declarerVaisseau ();
{
    Vaisseau* test = new Vaisseau;
    return test;
}

Code:

Vaisseau* pointeur = declarerVaisseau ();

si tu fait comme ça, pense a libérer la mémoire :

Code:

delete pointeur;

Dernière modification par Ilovechocolat (09-01-2010 15:59:26)

Hors ligne


#3 

09-01-2010 21:24:25

X3liF
Membre
Date d'inscription: 27-10-2009
Messages: 19

je pencherai sur un pointeur null pour que ca arrive si soudainement ^^

tu es sur que ton constructeur ne plante pas? car si la ligne

Code:

m_Nvaisseau->setPosition(m_position);

passe dans le constructeur je ne vois pas ce qui empecherai cette meme ligne de fonctionner dans une autre méthode....

si dans le setPosition tu mets :

Code:

 void Vaisseau::avance()
{
    if( m_Nvaisseau == NULL )
    {
          printf( "Vaisseau::avance() - m_Nvaisseau est NULL" );
          return;
    }

    m_Nvaisseau->setPosition(m_position);
}

ensuite est tu au courant que cette méthode ne fera jamais avancer ton vaisseau car tu ne modifies jamais sa position?

Dernière modification par X3liF (09-01-2010 21:24:47)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
141 invités en ligne
Aucun membre connecté
RSS Feed