Historique des modifications - Message

Message #7238

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


TypeDateAuteurContenu
Création du message23-10-2009 14:18:47Fol
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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
99 invités en ligne
membre en ligne: -
RSS Feed