Historique des modifications - Message

Message #7238

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


Type Date Auteur Contenu
Création du message 23-10-2009 14:18:47 Fol
Bonjour,

Je débute avec Irrlicht. J'essaye de créer une classe héritant de ISceneNode pour pouvoir gérer des déplacements plus facilement.
Seulement le compilateur renvoie une belle erreur lors de la compilation (qui se fait sous Linux). Si j'ai bien compris ce qu'il raconte, c'est parce que la classe MySceneNode est abstraite... alors qu'elle hérite de ISceneNode qu'on peut tout à fait instancier oO

Je met ici juste une fraction de mon code, le reste des méthodes présentes pour le moment dans la classe est quasi indentique à avanceX.

L'erreur :
main.cpp: In function ‘int main()’:
main.cpp:142: erreur: cannot allocate an object of abstract type ‘MySceneNode’
MonVolume.h:10: note:   because the following virtual functions are pure within ‘MySceneNode’:
../include/ISceneNode.h:133: note:      virtual void irr::scene::ISceneNode::render()
../include/ISceneNode.h:168: note:      virtual const irr::core::aabbox3d<float>& irr::scene::ISceneNode::getBoundingBox() const

main.cpp

Code c++ :

MySceneNode * node = new MySceneNode(smgr->addSphereSceneNode(30.f));

MySceneNode.h

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();

	void avanceX(s32 avance);
};

#endif

MySceneNode.cpp

Code c++ :

#include "MonVolume.h"


using namespace irr;

MySceneNode::MySceneNode(	scene::ISceneNode * parent,
						scene::ISceneManager * mgr,
						s32  	id = -1,
						const core::vector3df &  	position = core::vector3df(0,0,0),
						const core::vector3df &  	rotation = core::vector3df(0,0,0),
						const core::vector3df &  	scale = core::vector3df(1.0f, 1.0f, 1.0f)) : irr::scene::ISceneNode::ISceneNode(parent,mgr,id,position,rotation,scale)
{
}

MySceneNode::MySceneNode(scene::ISceneNode * node)
{
	MonVolume(node->getParent(),
			 node->getSceneManager(),
			 node->getID(),
			 node->getPosition(),
			 node->getRotation(),
			 node->getScale())
}

MySceneNode::~MySceneNode()
{
}

void MySceneNode::avanceX(s32 avance)
{
	core::vector3df nodePos = getPosition();
	nodePos.X += avance;
	setPosition(nodePos);
}

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