Historique des modifications - Message

Message #7240

Sujet: Problème d'héritage de ISceneNode


Type Date Auteur Contenu
Dernière modification 23-10-2009 14:56:17 Hawk
En fait, le problème que tu as est très simple.

La classe ISceneNode est abstraite, comme toutes les classes d'Irrlicht qui commence par un I (I = Interface)
Cette classe a donc un certain nombre de fonctions qui sont virtuelles pures. Quand tu définis qui dérive de ISceneNode, tu dois impérativement redefinir ces fonctions, de telles sortes à ce qu'elles ne soient plus virtuelles pures.

Je pense que pour corriger ce problème, tu dois avoir dans ton header :

Code c++ :


#ifndef DEF_MYSCENENODE
#define DEF_MYSCENENODE

#include <irrlicht.h>
#include <iostream>

using namespace irr;

class MySceneNode : public irr::scene::ISceneNode
{
    public:

    MySceneNode(ISceneNode * parent,
                 scene::ISceneManager *  mgr,
                 s32                     id,
                     const core::vector3df & position,
                 const core::vector3df & rotation,
                 const core::vector3df & scale);

    MySceneNode(scene::ISceneNode *);

    ~MySceneNode();

    /*Ici tu redéfinies la méthode render de ISceneNode. Elle est virtuelle, au cas où tu veux redériver encore ta classe, mais ce n'est pas obligatoire.*/
    virtual void render();

    /*De même, ici tu redéfinies la méthode getBoundingBox(). */
    virtual const irr::core::aabbox3d<float>& getBoundingBox() const;

    void avanceX(s32 avance);
};

#endif

Après, tu dois définir ces fonctions dans ton code source. Dans render tu mets la manière dont tu veux dessiner ton noeud, et dans getBoudingBox, tu renvoies la BB de ton noeud.
Création du message 23-10-2009 14:51:30 Hawk
En fait, le problème que tu as est très simple.

La classe ISceneNode est abstraite, comme toutes les classes d'Irrlicht qui commence par un I (I = Interface)
Cette classe a donc un certain nombre de fonctions qui sont virtuelles pures. Quand tu définis qui dérive de ISceneNode, tu dois impérativement redefinir ces fonctions, de telles sortes à ce qu'elles ne soient plus virtuelles pures.

Je pense que pour corriger ce problème, tu dois avoir dans ton header :

Code c++ :


#ifndef DEF_MYSCENENODE
#define DEF_MYSCENENODE

#include <irrlicht.h>
#include <iostream>

using namespace irr;

class MySceneNode : public irr::scene::ISceneNode
{
    public:

    MySceneNode(ISceneNode * parent,
                 scene::ISceneManager *  mgr,
                 s32                     id,
                     const core::vector3df & position,
                 const core::vector3df & rotation,
                 const core::vector3df & scale);

    MySceneNode(scene::ISceneNode *);

    ~MySceneNode();

    /*Ici tu redéfinies la méthode render de ISceneNode. Elle est virtuelle, au cas où tu veux redériver encore ta classe, mais ce n'est pas obligatoire.*/
    virtual void render();

    /*De même, ici tu redéfinies la méthode getBoundingBox(). */
    virtual const irr::core::aabbox3d<float>& getBoundingBox() const;

    void avanceX(s32 avance);
};

#endif

Après, tu dois définir ces fonctions dans ton code source. Dans render tu mets la manière dont tu veux dessiner ton noeud, et dans getBoudingBox, tu renvoies la BB de ton noeud.

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
166 invités en ligne
membre en ligne: -
RSS Feed